summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/yuzu/bootmanager.cpp20
-rw-r--r--src/yuzu/configuration/configure_camera.cpp20
2 files changed, 38 insertions, 2 deletions
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp
index c262d0a2b..d3fbdb09d 100644
--- a/src/yuzu/bootmanager.cpp
+++ b/src/yuzu/bootmanager.cpp
@@ -815,6 +815,12 @@ void GRenderWindow::InitializeCamera() {
815 if (Settings::values.ir_sensor_device.GetValue() == cameraInfo.deviceName().toStdString() || 815 if (Settings::values.ir_sensor_device.GetValue() == cameraInfo.deviceName().toStdString() ||
816 Settings::values.ir_sensor_device.GetValue() == "Auto") { 816 Settings::values.ir_sensor_device.GetValue() == "Auto") {
817 camera = std::make_unique<QCamera>(cameraInfo); 817 camera = std::make_unique<QCamera>(cameraInfo);
818 if (!camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureViewfinder) &&
819 !camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureStillImage)) {
820 LOG_ERROR(Frontend,
821 "Camera doesn't support CaptureViewfinder or CaptureStillImage");
822 continue;
823 }
818 camera_found = true; 824 camera_found = true;
819 break; 825 break;
820 } 826 }
@@ -825,10 +831,22 @@ void GRenderWindow::InitializeCamera() {
825 } 831 }
826 832
827 camera_capture = std::make_unique<QCameraImageCapture>(camera.get()); 833 camera_capture = std::make_unique<QCameraImageCapture>(camera.get());
834
835 if (!camera_capture->isCaptureDestinationSupported(
836 QCameraImageCapture::CaptureDestination::CaptureToBuffer)) {
837 LOG_ERROR(Frontend, "Camera doesn't support saving to buffer");
838 return;
839 }
840
841 camera_capture->setCaptureDestination(QCameraImageCapture::CaptureDestination::CaptureToBuffer);
828 connect(camera_capture.get(), &QCameraImageCapture::imageCaptured, this, 842 connect(camera_capture.get(), &QCameraImageCapture::imageCaptured, this,
829 &GRenderWindow::OnCameraCapture); 843 &GRenderWindow::OnCameraCapture);
830 camera->unload(); 844 camera->unload();
831 camera->setCaptureMode(QCamera::CaptureViewfinder); 845 if (camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureViewfinder)) {
846 camera->setCaptureMode(QCamera::CaptureViewfinder);
847 } else if (camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureStillImage)) {
848 camera->setCaptureMode(QCamera::CaptureStillImage);
849 }
832 camera->load(); 850 camera->load();
833 camera->start(); 851 camera->start();
834 852
diff --git a/src/yuzu/configuration/configure_camera.cpp b/src/yuzu/configuration/configure_camera.cpp
index 73cdcf3f2..2a61de2a1 100644
--- a/src/yuzu/configuration/configure_camera.cpp
+++ b/src/yuzu/configuration/configure_camera.cpp
@@ -42,6 +42,12 @@ void ConfigureCamera::PreviewCamera() {
42 LOG_INFO(Frontend, "Selected Camera {} {}", cameraInfo.description().toStdString(), 42 LOG_INFO(Frontend, "Selected Camera {} {}", cameraInfo.description().toStdString(),
43 cameraInfo.deviceName().toStdString()); 43 cameraInfo.deviceName().toStdString());
44 camera = std::make_unique<QCamera>(cameraInfo); 44 camera = std::make_unique<QCamera>(cameraInfo);
45 if (!camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureViewfinder) &&
46 !camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureStillImage)) {
47 LOG_ERROR(Frontend,
48 "Camera doesn't support CaptureViewfinder or CaptureStillImage");
49 continue;
50 }
45 camera_found = true; 51 camera_found = true;
46 break; 52 break;
47 } 53 }
@@ -57,10 +63,22 @@ void ConfigureCamera::PreviewCamera() {
57 } 63 }
58 64
59 camera_capture = std::make_unique<QCameraImageCapture>(camera.get()); 65 camera_capture = std::make_unique<QCameraImageCapture>(camera.get());
66
67 if (!camera_capture->isCaptureDestinationSupported(
68 QCameraImageCapture::CaptureDestination::CaptureToBuffer)) {
69 LOG_ERROR(Frontend, "Camera doesn't support saving to buffer");
70 return;
71 }
72
73 camera_capture->setCaptureDestination(QCameraImageCapture::CaptureDestination::CaptureToBuffer);
60 connect(camera_capture.get(), &QCameraImageCapture::imageCaptured, this, 74 connect(camera_capture.get(), &QCameraImageCapture::imageCaptured, this,
61 &ConfigureCamera::DisplayCapturedFrame); 75 &ConfigureCamera::DisplayCapturedFrame);
62 camera->unload(); 76 camera->unload();
63 camera->setCaptureMode(QCamera::CaptureViewfinder); 77 if (camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureViewfinder)) {
78 camera->setCaptureMode(QCamera::CaptureViewfinder);
79 } else if (camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureStillImage)) {
80 camera->setCaptureMode(QCamera::CaptureStillImage);
81 }
64 camera->load(); 82 camera->load();
65 camera->start(); 83 camera->start();
66 84