diff options
| -rw-r--r-- | src/input_common/drivers/camera.h | 1 | ||||
| -rw-r--r-- | src/yuzu/bootmanager.cpp | 16 | ||||
| -rw-r--r-- | src/yuzu/bootmanager.h | 2 | 
3 files changed, 13 insertions, 6 deletions
| diff --git a/src/input_common/drivers/camera.h b/src/input_common/drivers/camera.h index 38fb1ae4c..ead3e0fde 100644 --- a/src/input_common/drivers/camera.h +++ b/src/input_common/drivers/camera.h @@ -25,6 +25,7 @@ public:      Common::Input::CameraError SetCameraFormat(const PadIdentifier& identifier_,                                                 Common::Input::CameraFormat camera_format) override; +private:      Common::Input::CameraStatus status{};  }; diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index ffd3f0028..1368b20d5 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -764,7 +764,9 @@ void GRenderWindow::InitializeCamera() {          return;      } -    camera_data.resize(CAMERA_WIDTH * CAMERA_HEIGHT); +    const auto camera_width = input_subsystem->GetCamera()->getImageWidth(); +    const auto camera_height = input_subsystem->GetCamera()->getImageHeight(); +    camera_data.resize(camera_width * camera_height);      camera_capture->setCaptureDestination(QCameraImageCapture::CaptureDestination::CaptureToBuffer);      connect(camera_capture.get(), &QCameraImageCapture::imageCaptured, this,              &GRenderWindow::OnCameraCapture); @@ -822,12 +824,18 @@ void GRenderWindow::RequestCameraCapture() {  void GRenderWindow::OnCameraCapture(int requestId, const QImage& img) {  #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA      // TODO: Capture directly in the format and resolution needed +    const auto camera_width = input_subsystem->GetCamera()->getImageWidth(); +    const auto camera_height = input_subsystem->GetCamera()->getImageHeight();      const auto converted = -        img.scaled(CAMERA_WIDTH, CAMERA_HEIGHT, Qt::AspectRatioMode::IgnoreAspectRatio, +        img.scaled(static_cast<int>(camera_width), static_cast<int>(camera_height), +                   Qt::AspectRatioMode::IgnoreAspectRatio,                     Qt::TransformationMode::SmoothTransformation)              .mirrored(false, true); -    std::memcpy(camera_data.data(), converted.bits(), CAMERA_WIDTH * CAMERA_HEIGHT * sizeof(u32)); -    input_subsystem->GetCamera()->SetCameraData(CAMERA_WIDTH, CAMERA_HEIGHT, camera_data); +    if (camera_data.size() != camera_width * camera_height) { +        camera_data.resize(camera_width * camera_height); +    } +    std::memcpy(camera_data.data(), converted.bits(), camera_width * camera_height * sizeof(u32)); +    input_subsystem->GetCamera()->SetCameraData(camera_width, camera_height, camera_data);      pending_camera_snapshots = 0;  #endif  } diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h index 514437359..b24141fd9 100644 --- a/src/yuzu/bootmanager.h +++ b/src/yuzu/bootmanager.h @@ -243,8 +243,6 @@ private:      InputCommon::TasInput::TasState last_tas_state;  #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA -    static constexpr std::size_t CAMERA_WIDTH = 320; -    static constexpr std::size_t CAMERA_HEIGHT = 240;      bool is_virtual_camera;      int pending_camera_snapshots;      std::vector<u32> camera_data; | 
