mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 03:25:16 +00:00
Move permissions to own file
Some checks are pending
Build RPCS3 / Linux_Build (/rpcs3/.ci/build-linux-aarch64.sh, clang, rpcs3/rpcs3-ci-jammy-aarch64:1.1, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / Linux_Build (/rpcs3/.ci/build-linux.sh, clang, rpcs3/rpcs3-ci-jammy:1.1, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / Linux_Build (/rpcs3/.ci/build-linux.sh, gcc, rpcs3/rpcs3-ci-jammy:1.1, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / Windows_Build (push) Waiting to run
Some checks are pending
Build RPCS3 / Linux_Build (/rpcs3/.ci/build-linux-aarch64.sh, clang, rpcs3/rpcs3-ci-jammy-aarch64:1.1, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / Linux_Build (/rpcs3/.ci/build-linux.sh, clang, rpcs3/rpcs3-ci-jammy:1.1, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / Linux_Build (/rpcs3/.ci/build-linux.sh, gcc, rpcs3/rpcs3-ci-jammy:1.1, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / Windows_Build (push) Waiting to run
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\call_stack_list.cpp" />
|
||||
<ClCompile Include="rpcs3qt\camera_settings_dialog.cpp" />
|
||||
<ClCompile Include="rpcs3qt\permissions.cpp" />
|
||||
<ClCompile Include="rpcs3qt\ps_move_tracker_dialog.cpp" />
|
||||
<ClCompile Include="rpcs3qt\cheat_manager.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>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="rpcs3qt\pad_device_info.h" />
|
||||
<ClInclude Include="rpcs3qt\permissions.h" />
|
||||
<ClInclude Include="rpcs3qt\progress_indicator.h" />
|
||||
<CustomBuild Include="rpcs3qt\qt_music_handler.h">
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||
|
|
|
@ -1161,6 +1161,9 @@
|
|||
<ClCompile Include="Input\ps_move_calibration.cpp">
|
||||
<Filter>Io\Move</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rpcs3qt\permissions.cpp">
|
||||
<Filter>Gui\utils</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Input\ds4_pad_handler.h">
|
||||
|
@ -1364,6 +1367,9 @@
|
|||
<ClInclude Include="Input\ps_move_calibration.h">
|
||||
<Filter>Io\Move</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rpcs3qt\permissions.h">
|
||||
<Filter>Gui\utils</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
||||
|
|
|
@ -61,6 +61,7 @@ add_library(rpcs3_ui STATIC
|
|||
pad_settings_dialog.cpp
|
||||
patch_creator_dialog.cpp
|
||||
patch_manager_dialog.cpp
|
||||
permissions.cpp
|
||||
persistent_settings.cpp
|
||||
pkg_install_dialog.cpp
|
||||
progress_dialog.cpp
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "stdafx.h"
|
||||
#include "camera_settings_dialog.h"
|
||||
#include "ui_camera_settings_dialog.h"
|
||||
#include "permissions.h"
|
||||
#include "Emu/Io/camera_config.h"
|
||||
|
||||
#include <QCameraDevice>
|
||||
|
@ -8,10 +9,6 @@
|
|||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
|
||||
#if QT_CONFIG(permissions)
|
||||
#include <QPermissions>
|
||||
#endif
|
||||
|
||||
LOG_CHANNEL(camera_log, "Camera");
|
||||
|
||||
template <>
|
||||
|
@ -230,26 +227,12 @@ void camera_settings_dialog::handle_settings_change(int index)
|
|||
return;
|
||||
}
|
||||
|
||||
#if QT_CONFIG(permissions)
|
||||
const QCameraPermission permission;
|
||||
switch (qApp->checkPermission(permission))
|
||||
if (!gui::utils::check_camera_permission(this,
|
||||
[this, index](){ handle_settings_change(index); },
|
||||
[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;
|
||||
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>())
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "gui_application.h"
|
||||
|
||||
#include "qt_utils.h"
|
||||
#include "permissions.h"
|
||||
#include "welcome_dialog.h"
|
||||
#include "main_window.h"
|
||||
#include "emu_settings.h"
|
||||
|
@ -61,10 +62,6 @@
|
|||
#include "Emu/Cell/lv2/sys_usbd.h"
|
||||
#endif
|
||||
|
||||
#if QT_CONFIG(permissions)
|
||||
#include <QPermissions>
|
||||
#endif
|
||||
|
||||
LOG_CHANNEL(gui_log, "GUI");
|
||||
|
||||
std::unique_ptr<raw_mouse_handler> g_raw_mouse_handler;
|
||||
|
@ -888,28 +885,10 @@ void gui_application::InitializeCallbacks()
|
|||
|
||||
callbacks.check_microphone_permissions = []()
|
||||
{
|
||||
#if QT_CONFIG(permissions)
|
||||
Emu.BlockingCallFromMainThread([]()
|
||||
{
|
||||
const QMicrophonePermission 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;
|
||||
}
|
||||
gui::utils::check_microphone_permission();
|
||||
});
|
||||
#endif
|
||||
};
|
||||
|
||||
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 "qt_camera_handler.h"
|
||||
#include "permissions.h"
|
||||
#include "Emu/system_config.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/Io/camera_config.h"
|
||||
|
||||
#include <QMediaDevices>
|
||||
|
||||
#if QT_CONFIG(permissions)
|
||||
#include <QGuiApplication>
|
||||
#include <QPermissions>
|
||||
#endif
|
||||
|
||||
LOG_CHANNEL(camera_log, "Camera");
|
||||
|
||||
qt_camera_handler::qt_camera_handler() : camera_handler_base()
|
||||
|
@ -215,25 +211,10 @@ void qt_camera_handler::start_camera()
|
|||
return;
|
||||
}
|
||||
|
||||
#if QT_CONFIG(permissions)
|
||||
const QCameraPermission permission;
|
||||
switch (qApp->checkPermission(permission))
|
||||
if (!gui::utils::check_camera_permission(this, [this](){ start_camera(); }, nullptr))
|
||||
{
|
||||
case Qt::PermissionStatus::Undetermined:
|
||||
camera_log.notice("Requesting camera permission");
|
||||
qApp->requestPermission(permission, this, [this]()
|
||||
{
|
||||
start_camera();
|
||||
});
|
||||
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.
|
||||
set_expected_state(camera_handler_state::running);
|
||||
|
|
Loading…
Add table
Reference in a new issue