From bcf33b0ac61a7ae489b105f3cac3198398d7c569 Mon Sep 17 00:00:00 2001 From: vitor-k Date: Tue, 3 Sep 2019 11:06:57 -0300 Subject: [PATCH 1/2] Fix to windows sleep issues, now with clang format! --- src/citra_qt/main.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index fe8f60e25..d0060f690 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -18,6 +18,9 @@ #ifdef __APPLE__ #include // for chdir #endif +#ifdef _WIN32 +#include +#endif #include "citra_qt/aboutdialog.h" #include "citra_qt/applets/mii_selector.h" #include "citra_qt/applets/swkbd.h" @@ -899,6 +902,10 @@ void GMainWindow::ShutdownGame() { return; } +#ifdef _WIN32 + SetThreadExecutionState(ES_CONTINUOUS); +#endif + discord_rpc->Pause(); OnStopRecordingPlayback(); emu_thread->RequestStop(); @@ -1216,6 +1223,10 @@ void GMainWindow::OnStartGame() { movie_record_path.clear(); } +#ifdef _WIN32 + SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED); +#endif + emu_thread->SetRunning(true); qRegisterMetaType("Core::System::ResultStatus"); qRegisterMetaType("std::string"); @@ -1243,6 +1254,10 @@ void GMainWindow::OnPauseGame() { ui.action_Pause->setEnabled(false); ui.action_Stop->setEnabled(true); ui.action_Capture_Screenshot->setEnabled(false); + +#ifdef _WIN32 + SetThreadExecutionState(ES_CONTINUOUS); +#endif } void GMainWindow::OnStopGame() { From 50cee98bcaf6b567c1b316fcdcffba527d93bfbd Mon Sep 17 00:00:00 2001 From: vitor-k Date: Tue, 3 Sep 2019 16:13:14 -0300 Subject: [PATCH 2/2] Move the SetThreadExecutionState calls to their own separate functions --- src/citra_qt/main.cpp | 24 +++++++++++++++--------- src/citra_qt/main.h | 3 +++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index d0060f690..d9d9a6c0e 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -712,6 +712,18 @@ void GMainWindow::OnOpenUpdater() { updater->LaunchUI(); } +void GMainWindow::PreventOSSleep() { +#ifdef _WIN32 + SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED); +#endif +} + +void GMainWindow::AllowOSSleep() { +#ifdef _WIN32 + SetThreadExecutionState(ES_CONTINUOUS); +#endif +} + bool GMainWindow::LoadROM(const QString& filename) { // Shutdown previous session if the emu thread is still active... if (emu_thread != nullptr) @@ -902,9 +914,7 @@ void GMainWindow::ShutdownGame() { return; } -#ifdef _WIN32 - SetThreadExecutionState(ES_CONTINUOUS); -#endif + AllowOSSleep(); discord_rpc->Pause(); OnStopRecordingPlayback(); @@ -1223,9 +1233,7 @@ void GMainWindow::OnStartGame() { movie_record_path.clear(); } -#ifdef _WIN32 - SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED); -#endif + PreventOSSleep(); emu_thread->SetRunning(true); qRegisterMetaType("Core::System::ResultStatus"); @@ -1255,9 +1263,7 @@ void GMainWindow::OnPauseGame() { ui.action_Stop->setEnabled(true); ui.action_Capture_Screenshot->setEnabled(false); -#ifdef _WIN32 - SetThreadExecutionState(ES_CONTINUOUS); -#endif + AllowOSSleep(); } void GMainWindow::OnStopGame() { diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h index 780589141..204d1c8f1 100644 --- a/src/citra_qt/main.h +++ b/src/citra_qt/main.h @@ -104,6 +104,9 @@ private: void ConnectWidgetEvents(); void ConnectMenuEvents(); + void PreventOSSleep(); + void AllowOSSleep(); + bool LoadROM(const QString& filename); void BootGame(const QString& filename); void ShutdownGame();