mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-28 13:28:01 +03:00
Move permissions to own file
This commit is contained in:
parent
3c576da42f
commit
4df1f9fb18
8 changed files with 93 additions and 65 deletions
|
@ -757,6 +757,7 @@
|
||||||
<ClCompile Include="rpcs3qt\breakpoint_list.cpp" />
|
<ClCompile Include="rpcs3qt\breakpoint_list.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\call_stack_list.cpp" />
|
<ClCompile Include="rpcs3qt\call_stack_list.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\camera_settings_dialog.cpp" />
|
<ClCompile Include="rpcs3qt\camera_settings_dialog.cpp" />
|
||||||
|
<ClCompile Include="rpcs3qt\permissions.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\ps_move_tracker_dialog.cpp" />
|
<ClCompile Include="rpcs3qt\ps_move_tracker_dialog.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\cheat_manager.cpp" />
|
<ClCompile Include="rpcs3qt\cheat_manager.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\config_adapter.cpp" />
|
<ClCompile Include="rpcs3qt\config_adapter.cpp" />
|
||||||
|
@ -1462,6 +1463,7 @@
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-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" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWIN32_LEAN_AND_MEAN -DHAVE_VULKAN -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -DQT_MULTIMEDIA_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\SoundTouch\soundtouch\include" "-I.\..\3rdparty\cubeb\extra" "-I.\..\3rdparty\cubeb\cubeb\include" "-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" "-I$(QTDIR)\include\QtMultimedia" "-I$(QTDIR)\include\QtMultimediaWidgets" "-I$(QTDIR)\include\QtSvg"</Command>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<ClInclude Include="rpcs3qt\pad_device_info.h" />
|
<ClInclude Include="rpcs3qt\pad_device_info.h" />
|
||||||
|
<ClInclude Include="rpcs3qt\permissions.h" />
|
||||||
<ClInclude Include="rpcs3qt\progress_indicator.h" />
|
<ClInclude Include="rpcs3qt\progress_indicator.h" />
|
||||||
<CustomBuild Include="rpcs3qt\qt_music_handler.h">
|
<CustomBuild Include="rpcs3qt\qt_music_handler.h">
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
|
|
|
@ -1161,6 +1161,9 @@
|
||||||
<ClCompile Include="Input\ps_move_calibration.cpp">
|
<ClCompile Include="Input\ps_move_calibration.cpp">
|
||||||
<Filter>Io\Move</Filter>
|
<Filter>Io\Move</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="rpcs3qt\permissions.cpp">
|
||||||
|
<Filter>Gui\utils</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Input\ds4_pad_handler.h">
|
<ClInclude Include="Input\ds4_pad_handler.h">
|
||||||
|
@ -1364,6 +1367,9 @@
|
||||||
<ClInclude Include="Input\ps_move_calibration.h">
|
<ClInclude Include="Input\ps_move_calibration.h">
|
||||||
<Filter>Io\Move</Filter>
|
<Filter>Io\Move</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="rpcs3qt\permissions.h">
|
||||||
|
<Filter>Gui\utils</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
||||||
|
|
|
@ -61,6 +61,7 @@ add_library(rpcs3_ui STATIC
|
||||||
pad_settings_dialog.cpp
|
pad_settings_dialog.cpp
|
||||||
patch_creator_dialog.cpp
|
patch_creator_dialog.cpp
|
||||||
patch_manager_dialog.cpp
|
patch_manager_dialog.cpp
|
||||||
|
permissions.cpp
|
||||||
persistent_settings.cpp
|
persistent_settings.cpp
|
||||||
pkg_install_dialog.cpp
|
pkg_install_dialog.cpp
|
||||||
progress_dialog.cpp
|
progress_dialog.cpp
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "camera_settings_dialog.h"
|
#include "camera_settings_dialog.h"
|
||||||
#include "ui_camera_settings_dialog.h"
|
#include "ui_camera_settings_dialog.h"
|
||||||
|
#include "permissions.h"
|
||||||
#include "Emu/Io/camera_config.h"
|
#include "Emu/Io/camera_config.h"
|
||||||
|
|
||||||
#include <QCameraDevice>
|
#include <QCameraDevice>
|
||||||
|
@ -8,10 +9,6 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
|
||||||
#if QT_CONFIG(permissions)
|
|
||||||
#include <QPermissions>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOG_CHANNEL(camera_log, "Camera");
|
LOG_CHANNEL(camera_log, "Camera");
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
|
@ -230,26 +227,12 @@ void camera_settings_dialog::handle_settings_change(int index)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QT_CONFIG(permissions)
|
if (!gui::utils::check_camera_permission(this,
|
||||||
const QCameraPermission permission;
|
[this, index](){ handle_settings_change(index); },
|
||||||
switch (qApp->checkPermission(permission))
|
[this](){ QMessageBox::warning(this, tr("Camera permissions denied!"), tr("RPCS3 has no permissions to access cameras on this device.")); }))
|
||||||
{
|
{
|
||||||
case Qt::PermissionStatus::Undetermined:
|
|
||||||
camera_log.notice("Requesting camera permission");
|
|
||||||
qApp->requestPermission(permission, this, [this, index]()
|
|
||||||
{
|
|
||||||
handle_settings_change(index);
|
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
case Qt::PermissionStatus::Denied:
|
|
||||||
camera_log.error("RPCS3 has no permissions to access cameras on this device.");
|
|
||||||
QMessageBox::warning(this, tr("Camera permissions denied!"), tr("RPCS3 has no permissions to access cameras on this device."));
|
|
||||||
return;
|
|
||||||
case Qt::PermissionStatus::Granted:
|
|
||||||
camera_log.notice("Camera permission granted");
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (index >= 0 && ui->combo_settings->itemData(index).canConvert<QCameraFormat>() && ui->combo_camera->currentData().canConvert<QCameraDevice>())
|
if (index >= 0 && ui->combo_settings->itemData(index).canConvert<QCameraFormat>() && ui->combo_camera->currentData().canConvert<QCameraDevice>())
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "gui_application.h"
|
#include "gui_application.h"
|
||||||
|
|
||||||
#include "qt_utils.h"
|
#include "qt_utils.h"
|
||||||
|
#include "permissions.h"
|
||||||
#include "welcome_dialog.h"
|
#include "welcome_dialog.h"
|
||||||
#include "main_window.h"
|
#include "main_window.h"
|
||||||
#include "emu_settings.h"
|
#include "emu_settings.h"
|
||||||
|
@ -61,10 +62,6 @@
|
||||||
#include "Emu/Cell/lv2/sys_usbd.h"
|
#include "Emu/Cell/lv2/sys_usbd.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if QT_CONFIG(permissions)
|
|
||||||
#include <QPermissions>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOG_CHANNEL(gui_log, "GUI");
|
LOG_CHANNEL(gui_log, "GUI");
|
||||||
|
|
||||||
std::unique_ptr<raw_mouse_handler> g_raw_mouse_handler;
|
std::unique_ptr<raw_mouse_handler> g_raw_mouse_handler;
|
||||||
|
@ -888,28 +885,10 @@ void gui_application::InitializeCallbacks()
|
||||||
|
|
||||||
callbacks.check_microphone_permissions = []()
|
callbacks.check_microphone_permissions = []()
|
||||||
{
|
{
|
||||||
#if QT_CONFIG(permissions)
|
|
||||||
Emu.BlockingCallFromMainThread([]()
|
Emu.BlockingCallFromMainThread([]()
|
||||||
{
|
{
|
||||||
const QMicrophonePermission permission;
|
gui::utils::check_microphone_permission();
|
||||||
switch (qApp->checkPermission(permission))
|
|
||||||
{
|
|
||||||
case Qt::PermissionStatus::Undetermined:
|
|
||||||
gui_log.notice("Requesting microphone permission");
|
|
||||||
qApp->requestPermission(permission, []()
|
|
||||||
{
|
|
||||||
Emu.GetCallbacks().check_microphone_permissions();
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case Qt::PermissionStatus::Denied:
|
|
||||||
gui_log.error("RPCS3 has no permissions to access microphones on this device.");
|
|
||||||
break;
|
|
||||||
case Qt::PermissionStatus::Granted:
|
|
||||||
gui_log.notice("Microphone permission granted");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Emu.SetCallbacks(std::move(callbacks));
|
Emu.SetCallbacks(std::move(callbacks));
|
||||||
|
|
66
rpcs3/rpcs3qt/permissions.cpp
Normal file
66
rpcs3/rpcs3qt/permissions.cpp
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "permissions.h"
|
||||||
|
|
||||||
|
#include <qglobal.h>
|
||||||
|
|
||||||
|
#if QT_CONFIG(permissions)
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QPermissions>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LOG_CHANNEL(gui_log, "GUI");
|
||||||
|
LOG_CHANNEL(camera_log, "Camera");
|
||||||
|
|
||||||
|
namespace gui
|
||||||
|
{
|
||||||
|
namespace utils
|
||||||
|
{
|
||||||
|
void check_microphone_permission()
|
||||||
|
{
|
||||||
|
#if QT_CONFIG(permissions)
|
||||||
|
const QMicrophonePermission permission;
|
||||||
|
switch (qApp->checkPermission(permission))
|
||||||
|
{
|
||||||
|
case Qt::PermissionStatus::Undetermined:
|
||||||
|
gui_log.notice("Requesting microphone permission");
|
||||||
|
qApp->requestPermission(permission, []()
|
||||||
|
{
|
||||||
|
check_microphone_permission();
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case Qt::PermissionStatus::Denied:
|
||||||
|
gui_log.error("RPCS3 has no permissions to access microphones on this device.");
|
||||||
|
break;
|
||||||
|
case Qt::PermissionStatus::Granted:
|
||||||
|
gui_log.notice("Microphone permission granted");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool check_camera_permission(void* obj, std::function<void()> repeat_callback, std::function<void()> denied_callback)
|
||||||
|
{
|
||||||
|
#if QT_CONFIG(permissions)
|
||||||
|
const QCameraPermission permission;
|
||||||
|
switch (qApp->checkPermission(permission))
|
||||||
|
{
|
||||||
|
case Qt::PermissionStatus::Undetermined:
|
||||||
|
camera_log.notice("Requesting camera permission");
|
||||||
|
qApp->requestPermission(permission, static_cast<QObject*>(obj), [repeat_callback]()
|
||||||
|
{
|
||||||
|
if (repeat_callback) repeat_callback();
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
case Qt::PermissionStatus::Denied:
|
||||||
|
camera_log.error("RPCS3 has no permissions to access cameras on this device.");
|
||||||
|
if (denied_callback) denied_callback();
|
||||||
|
return false;
|
||||||
|
case Qt::PermissionStatus::Granted:
|
||||||
|
camera_log.notice("Camera permission granted");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
rpcs3/rpcs3qt/permissions.h
Normal file
10
rpcs3/rpcs3qt/permissions.h
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace gui
|
||||||
|
{
|
||||||
|
namespace utils
|
||||||
|
{
|
||||||
|
void check_microphone_permission();
|
||||||
|
bool check_camera_permission(void* obj, std::function<void()> repeat_callback, std::function<void()> denied_callback);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,16 +1,12 @@
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "qt_camera_handler.h"
|
#include "qt_camera_handler.h"
|
||||||
|
#include "permissions.h"
|
||||||
#include "Emu/system_config.h"
|
#include "Emu/system_config.h"
|
||||||
#include "Emu/System.h"
|
#include "Emu/System.h"
|
||||||
#include "Emu/Io/camera_config.h"
|
#include "Emu/Io/camera_config.h"
|
||||||
|
|
||||||
#include <QMediaDevices>
|
#include <QMediaDevices>
|
||||||
|
|
||||||
#if QT_CONFIG(permissions)
|
|
||||||
#include <QGuiApplication>
|
|
||||||
#include <QPermissions>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOG_CHANNEL(camera_log, "Camera");
|
LOG_CHANNEL(camera_log, "Camera");
|
||||||
|
|
||||||
qt_camera_handler::qt_camera_handler() : camera_handler_base()
|
qt_camera_handler::qt_camera_handler() : camera_handler_base()
|
||||||
|
@ -215,25 +211,10 @@ void qt_camera_handler::start_camera()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QT_CONFIG(permissions)
|
if (!gui::utils::check_camera_permission(this, [this](){ start_camera(); }, nullptr))
|
||||||
const QCameraPermission permission;
|
|
||||||
switch (qApp->checkPermission(permission))
|
|
||||||
{
|
{
|
||||||
case Qt::PermissionStatus::Undetermined:
|
|
||||||
camera_log.notice("Requesting camera permission");
|
|
||||||
qApp->requestPermission(permission, this, [this]()
|
|
||||||
{
|
|
||||||
start_camera();
|
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
case Qt::PermissionStatus::Denied:
|
|
||||||
camera_log.error("RPCS3 has no permissions to access cameras on this device.");
|
|
||||||
return;
|
|
||||||
case Qt::PermissionStatus::Granted:
|
|
||||||
camera_log.notice("Camera permission granted");
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// Start camera. We will start receiving frames now.
|
// Start camera. We will start receiving frames now.
|
||||||
set_expected_state(camera_handler_state::running);
|
set_expected_state(camera_handler_state::running);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue