diff --git a/rpcs3/Emu/Io/camera_handler_base.h b/rpcs3/Emu/Io/camera_handler_base.h index 1c0eb5588b..98f1158c43 100644 --- a/rpcs3/Emu/Io/camera_handler_base.h +++ b/rpcs3/Emu/Io/camera_handler_base.h @@ -1,7 +1,9 @@ #pragma once +#include "util/atomic.hpp" +#include "util/types.hpp" + #include -#include class camera_handler_base { diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj index db5d02dba4..ad2ef88ed4 100644 --- a/rpcs3/rpcs3.vcxproj +++ b/rpcs3/rpcs3.vcxproj @@ -345,7 +345,7 @@ true - + true @@ -609,7 +609,7 @@ true - + true @@ -751,7 +751,6 @@ - @@ -1377,7 +1376,7 @@ .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\flatbuffers\include" "-I.\..\3rdparty\wolfssl\wolfssl" "-I.\..\3rdparty\curl\curl\include" "-I.\..\3rdparty\libusb\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent" - + $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing %(Identity)... .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp @@ -1399,7 +1398,6 @@ - $(QTDIR)\bin\moc.exe;%(FullPath) @@ -1948,4 +1946,4 @@ - \ No newline at end of file + diff --git a/rpcs3/rpcs3.vcxproj.filters b/rpcs3/rpcs3.vcxproj.filters index 0be69ee740..01cb7c7c6c 100644 --- a/rpcs3/rpcs3.vcxproj.filters +++ b/rpcs3/rpcs3.vcxproj.filters @@ -828,13 +828,10 @@ Io\camera - - Io\camera - - + Generated Files\Debug - + Generated Files\Release @@ -1199,9 +1196,6 @@ Io\camera - - Io\camera - Generated Files @@ -1483,7 +1477,7 @@ Gui\message dialog - + Io\camera diff --git a/rpcs3/rpcs3qt/CMakeLists.txt b/rpcs3/rpcs3qt/CMakeLists.txt index 7408976176..0a27e49eec 100644 --- a/rpcs3/rpcs3qt/CMakeLists.txt +++ b/rpcs3/rpcs3qt/CMakeLists.txt @@ -63,7 +63,6 @@ add_library(rpcs3_ui STATIC pkg_install_dialog.cpp progress_dialog.cpp progress_indicator.cpp - qt_camera_error_handler.cpp qt_camera_handler.cpp qt_camera_video_sink.cpp qt_music_error_handler.cpp diff --git a/rpcs3/rpcs3qt/qt_camera_error_handler.cpp b/rpcs3/rpcs3qt/qt_camera_error_handler.cpp deleted file mode 100644 index f7bec4fee8..0000000000 --- a/rpcs3/rpcs3qt/qt_camera_error_handler.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "stdafx.h" -#include "qt_camera_error_handler.h" - -LOG_CHANNEL(camera_log, "Camera"); - -qt_camera_error_handler::qt_camera_error_handler(std::shared_ptr camera, std::function status_callback) - : m_camera(std::move(camera)) - , m_status_callback(std::move(status_callback)) -{ - if (m_camera) - { - connect(m_camera.get(), &QCamera::activeChanged, this, &qt_camera_error_handler::handle_camera_active); - connect(m_camera.get(), &QCamera::errorOccurred, this, &qt_camera_error_handler::handle_camera_error); - } -} - -qt_camera_error_handler::~qt_camera_error_handler() -{ -} - -void qt_camera_error_handler::handle_camera_active(bool is_active) -{ - camera_log.notice("Camera active status changed to %d", is_active); - - if (m_status_callback) - { - m_status_callback(is_active); - } -} - -void qt_camera_error_handler::handle_camera_error(QCamera::Error error, const QString& errorString) -{ - camera_log.error("Error event: \"%s\" (error=%d)", errorString, static_cast(error)); -} diff --git a/rpcs3/rpcs3qt/qt_camera_error_handler.h b/rpcs3/rpcs3qt/qt_camera_error_handler.h deleted file mode 100644 index a2d2c81bac..0000000000 --- a/rpcs3/rpcs3qt/qt_camera_error_handler.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include -#include - -class qt_camera_error_handler : public QObject -{ - Q_OBJECT - -public: - qt_camera_error_handler(std::shared_ptr camera, std::function status_callback); - virtual ~qt_camera_error_handler(); - -private Q_SLOTS: - void handle_camera_active(bool is_active); - void handle_camera_error(QCamera::Error error, const QString& errorString); - -private: - std::shared_ptr m_camera; - std::function m_status_callback = nullptr; -}; diff --git a/rpcs3/rpcs3qt/qt_camera_handler.cpp b/rpcs3/rpcs3qt/qt_camera_handler.cpp index 500f9eb22d..f522cbf315 100644 --- a/rpcs3/rpcs3qt/qt_camera_handler.cpp +++ b/rpcs3/rpcs3qt/qt_camera_handler.cpp @@ -3,7 +3,6 @@ #include "Emu/system_config.h" #include "Emu/System.h" #include "Emu/Io/camera_config.h" -#include "Emu/Cell/lv2/sys_event.h" #include @@ -35,7 +34,6 @@ qt_camera_handler::~qt_camera_handler() void qt_camera_handler::reset() { m_camera.reset(); - m_error_handler.reset(); m_video_sink.reset(); m_media_capture_session.reset(); } @@ -57,18 +55,9 @@ void qt_camera_handler::set_camera(const QCameraDevice& camera_info) m_media_capture_session.reset(new QMediaCaptureSession(nullptr)); m_video_sink.reset(new qt_camera_video_sink(front_facing, nullptr)); m_camera.reset(new QCamera(camera_info)); - m_error_handler.reset(new qt_camera_error_handler(m_camera, - [this](bool is_active) - { - if (is_active) - { - m_state = camera_handler_state::running; - } - else - { - m_state = camera_handler_state::closed; - } - })); + + connect(m_camera.get(), &QCamera::activeChanged, this, &qt_camera_handler::handle_camera_active); + connect(m_camera.get(), &QCamera::errorOccurred, this, &qt_camera_handler::handle_camera_error); // Setup video sink m_media_capture_session->setCamera(m_camera.get()); @@ -78,6 +67,25 @@ void qt_camera_handler::set_camera(const QCameraDevice& camera_info) update_camera_settings(); } +void qt_camera_handler::handle_camera_active(bool is_active) +{ + camera_log.notice("Camera active status changed to %d", is_active); + + if (is_active) + { + m_state = camera_handler_state::running; + } + else + { + m_state = camera_handler_state::closed; + } +} + +void qt_camera_handler::handle_camera_error(QCamera::Error error, const QString& errorString) +{ + camera_log.error("Error event: \"%s\" (error=%d)", errorString, static_cast(error)); +} + void qt_camera_handler::open_camera() { camera_log.notice("Loading camera"); diff --git a/rpcs3/rpcs3qt/qt_camera_handler.h b/rpcs3/rpcs3qt/qt_camera_handler.h index 4cf1f01a7e..d828bd6c84 100644 --- a/rpcs3/rpcs3qt/qt_camera_handler.h +++ b/rpcs3/rpcs3qt/qt_camera_handler.h @@ -2,14 +2,17 @@ #include "Emu/Io/camera_handler_base.h" #include "qt_camera_video_sink.h" -#include "qt_camera_error_handler.h" +#include "util/types.hpp" #include #include +#include #include -class qt_camera_handler final : public camera_handler_base +class qt_camera_handler final : public QObject, public camera_handler_base { + Q_OBJECT + public: qt_camera_handler(); virtual ~qt_camera_handler(); @@ -35,5 +38,8 @@ private: std::shared_ptr m_camera; std::unique_ptr m_media_capture_session; std::unique_ptr m_video_sink; - std::unique_ptr m_error_handler; + +private Q_SLOTS: + void handle_camera_active(bool is_active); + void handle_camera_error(QCamera::Error error, const QString& errorString); };