merge qt_camera_error_handler into qt_camera_handler

This commit is contained in:
oltolm 2024-01-11 16:41:19 +01:00 committed by Megamouse
parent 11562c430a
commit 86f86f516a
8 changed files with 41 additions and 89 deletions

View File

@ -1,7 +1,9 @@
#pragma once
#include "util/atomic.hpp"
#include "util/types.hpp"
#include <mutex>
#include <vector>
class camera_handler_base
{

View File

@ -345,7 +345,7 @@
<ClCompile Include="QTGeneratedFiles\Debug\moc_pkg_install_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_camera_error_handler.cpp">
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_camera_handler.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_music_error_handler.cpp">
@ -609,7 +609,7 @@
<ClCompile Include="QTGeneratedFiles\Release\moc_pkg_install_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_camera_error_handler.cpp">
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_camera_handler.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_music_error_handler.cpp">
@ -751,7 +751,6 @@
<ClCompile Include="rpcs3qt\pkg_install_dialog.cpp" />
<ClCompile Include="rpcs3qt\persistent_settings.cpp" />
<ClCompile Include="rpcs3qt\progress_indicator.cpp" />
<ClCompile Include="rpcs3qt\qt_camera_error_handler.cpp" />
<ClCompile Include="rpcs3qt\qt_camera_handler.cpp" />
<ClCompile Include="rpcs3qt\qt_music_error_handler.cpp" />
<ClCompile Include="rpcs3qt\qt_music_handler.cpp" />
@ -1377,7 +1376,7 @@
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(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"</Command>
</CustomBuild>
<CustomBuild Include="rpcs3qt\qt_camera_error_handler.h">
<CustomBuild Include="rpcs3qt\qt_camera_handler.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
@ -1399,7 +1398,6 @@
</CustomBuild>
<ClInclude Include="rpcs3qt\pad_device_info.h" />
<ClInclude Include="rpcs3qt\progress_indicator.h" />
<ClInclude Include="rpcs3qt\qt_camera_handler.h" />
<ClInclude Include="rpcs3qt\qt_music_handler.h" />
<CustomBuild Include="rpcs3qt\qt_music_error_handler.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>

View File

@ -828,13 +828,10 @@
<ClCompile Include="rpcs3qt\qt_camera_video_sink.cpp">
<Filter>Io\camera</Filter>
</ClCompile>
<ClCompile Include="rpcs3qt\qt_camera_error_handler.cpp">
<Filter>Io\camera</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_camera_error_handler.cpp">
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_camera_handler.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_camera_error_handler.cpp">
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_camera_handler.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="rpcs3qt\camera_settings_dialog.cpp">
@ -1199,9 +1196,6 @@
<ClInclude Include="rpcs3qt\qt_camera_video_sink.h">
<Filter>Io\camera</Filter>
</ClInclude>
<ClInclude Include="rpcs3qt\qt_camera_handler.h">
<Filter>Io\camera</Filter>
</ClInclude>
<ClInclude Include="QTGeneratedFiles\ui_camera_settings_dialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
@ -1483,7 +1477,7 @@
<CustomBuild Include="rpcs3qt\recvmessage_dialog_frame.h">
<Filter>Gui\message dialog</Filter>
</CustomBuild>
<CustomBuild Include="rpcs3qt\qt_camera_error_handler.h">
<CustomBuild Include="rpcs3qt\qt_camera_handler.h">
<Filter>Io\camera</Filter>
</CustomBuild>
<CustomBuild Include="rpcs3qt\camera_settings_dialog.ui">

View File

@ -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

View File

@ -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<QCamera> camera, std::function<void(bool)> 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<int>(error));
}

View File

@ -1,21 +0,0 @@
#pragma once
#include <QObject>
#include <QCamera>
class qt_camera_error_handler : public QObject
{
Q_OBJECT
public:
qt_camera_error_handler(std::shared_ptr<QCamera> camera, std::function<void(bool)> 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<QCamera> m_camera;
std::function<void(bool)> m_status_callback = nullptr;
};

View File

@ -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 <QMediaDevices>
@ -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,9 +55,22 @@ 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)
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());
m_media_capture_session->setVideoSink(m_video_sink.get());
// Update the settings
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;
@ -68,14 +79,11 @@ void qt_camera_handler::set_camera(const QCameraDevice& camera_info)
{
m_state = camera_handler_state::closed;
}
}));
}
// Setup video sink
m_media_capture_session->setCamera(m_camera.get());
m_media_capture_session->setVideoSink(m_video_sink.get());
// Update the settings
update_camera_settings();
void qt_camera_handler::handle_camera_error(QCamera::Error error, const QString& errorString)
{
camera_log.error("Error event: \"%s\" (error=%d)", errorString, static_cast<int>(error));
}
void qt_camera_handler::open_camera()

View File

@ -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 <QCamera>
#include <QMediaCaptureSession>
#include <QObject>
#include <QVideoSink>
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<QCamera> m_camera;
std::unique_ptr<QMediaCaptureSession> m_media_capture_session;
std::unique_ptr<qt_camera_video_sink> m_video_sink;
std::unique_ptr<qt_camera_error_handler> m_error_handler;
private Q_SLOTS:
void handle_camera_active(bool is_active);
void handle_camera_error(QCamera::Error error, const QString& errorString);
};