aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Common/System
diff options
context:
space:
mode:
authorEliEron <subanimehd@gmail.com>2021-01-25 00:02:00 +0100
committerGitHub <noreply@github.com>2021-01-25 10:02:00 +1100
commitad491b5570ec428d0d87d56426b03125e2ca5220 (patch)
treea96a30e38fe1dfbb7c92abf3afb0154f28e2a846 /Ryujinx.Common/System
parentddf1105bcb6c9884e1188d5f63f0890ef1806176 (diff)
Prevent Display Sleep on Windows while running a game (#1850)
Co-authored-by: EliEron <example@example.com>
Diffstat (limited to 'Ryujinx.Common/System')
-rw-r--r--Ryujinx.Common/System/DisplaySleep.cs35
1 files changed, 35 insertions, 0 deletions
diff --git a/Ryujinx.Common/System/DisplaySleep.cs b/Ryujinx.Common/System/DisplaySleep.cs
new file mode 100644
index 00000000..77f9dd75
--- /dev/null
+++ b/Ryujinx.Common/System/DisplaySleep.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.Common.System
+{
+ public class DisplaySleep
+ {
+ [Flags]
+ enum EXECUTION_STATE : uint
+ {
+ ES_CONTINUOUS = 0x80000000,
+ ES_DISPLAY_REQUIRED = 0x00000002,
+ ES_SYSTEM_REQUIRED = 0x00000001
+ }
+
+ [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
+ static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
+
+ static public void Prevent()
+ {
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_SYSTEM_REQUIRED | EXECUTION_STATE.ES_DISPLAY_REQUIRED);
+ }
+ }
+
+ static public void Restore()
+ {
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS);
+ }
+ }
+ }
+}