Emu: Make prevent_display_sleep dynamic

This commit is contained in:
Megamouse 2020-07-03 17:12:58 +02:00
parent d91551c277
commit 8d2ce2815c
4 changed files with 28 additions and 9 deletions

View File

@ -1618,10 +1618,8 @@ bool Emulator::Pause()
idm::select<named_thread<ppu_thread>>(on_select);
idm::select<named_thread<spu_thread>>(on_select);
if (g_cfg.misc.prevent_display_sleep)
{
enable_display_sleep();
}
// Always Enable display sleep, not only if it was prevented.
enable_display_sleep();
return true;
}
@ -1776,10 +1774,8 @@ void Emulator::Stop(bool restart)
m_force_boot = false;
if (g_cfg.misc.prevent_display_sleep)
{
enable_display_sleep();
}
// Always Enable display sleep, not only if it was prevented.
enable_display_sleep();
if (do_exit || full_stop)
{

View File

@ -270,7 +270,7 @@ struct cfg_root : cfg::node
cfg::_bool autostart{ this, "Automatically start games after boot", true, true };
cfg::_bool autoexit{ this, "Exit RPCS3 when process finishes", false, true };
cfg::_bool start_fullscreen{ this, "Start games in fullscreen mode", false, true };
cfg::_bool prevent_display_sleep{ this, "Prevent display sleep while running games", true };
cfg::_bool prevent_display_sleep{ this, "Prevent display sleep while running games", true, true };
cfg::_bool show_trophy_popups{ this, "Show trophy popups", true, true };
cfg::_bool show_shader_compilation_hint{ this, "Show shader compilation hint", true, true };
cfg::_bool use_native_interface{ this, "Use native user interface", true };

View File

@ -32,6 +32,11 @@ bool display_sleep_control_supported()
void enable_display_sleep()
{
if (!display_sleep_control_supported())
{
return;
}
#ifdef _WIN32
SetThreadExecutionState(ES_CONTINUOUS);
#elif defined(__APPLE__)
@ -52,6 +57,11 @@ void enable_display_sleep()
void disable_display_sleep()
{
if (!display_sleep_control_supported())
{
return;
}
#ifdef _WIN32
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);
#elif defined(__APPLE__)

View File

@ -8,6 +8,7 @@
#include "persistent_settings.h"
#include "gs_frame.h"
#include "gl_gs_frame.h"
#include "display_sleep_control.h"
#ifdef WITH_DISCORD_RPC
#include "_discord_utils.h"
@ -460,6 +461,18 @@ void gui_application::OnChangeStyleSheetRequest(const QString& path)
void gui_application::OnEmuSettingsChange()
{
if (Emu.IsRunning())
{
if (g_cfg.misc.prevent_display_sleep)
{
enable_display_sleep();
}
else
{
disable_display_sleep();
}
}
Emu.ConfigureLogs();
rsx::overlays::reset_performance_overlay();
}