diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index fe8f60e25..d9d9a6c0e 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" @@ -709,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) @@ -899,6 +914,8 @@ void GMainWindow::ShutdownGame() { return; } + AllowOSSleep(); + discord_rpc->Pause(); OnStopRecordingPlayback(); emu_thread->RequestStop(); @@ -1216,6 +1233,8 @@ void GMainWindow::OnStartGame() { movie_record_path.clear(); } + PreventOSSleep(); + emu_thread->SetRunning(true); qRegisterMetaType("Core::System::ResultStatus"); qRegisterMetaType("std::string"); @@ -1243,6 +1262,8 @@ void GMainWindow::OnPauseGame() { ui.action_Pause->setEnabled(false); ui.action_Stop->setEnabled(true); ui.action_Capture_Screenshot->setEnabled(false); + + 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();