Win32: Fix screensaver and blanking prevention

On Vista and later, Handling WM_SYSCOMMAND is not enough to prevent
password protected screensavers or monitor blanking.

Fixes #851.
This commit is contained in:
Camilla Löwy
2017-02-09 21:21:58 +01:00
parent 366b90be1a
commit 355b46e6c5
3 changed files with 12 additions and 0 deletions
+9
View File
@@ -422,6 +422,11 @@ static GLFWbool acquireMonitor(_GLFWwindow* window)
GLFWbool status;
int xpos, ypos;
if (!_glfw.win32.acquiredMonitorCount)
SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED);
if (!window->monitor->window)
_glfw.win32.acquiredMonitorCount++;
status = _glfwSetVideoModeWin32(window->monitor, &window->videoMode);
_glfwPlatformGetVideoMode(window->monitor, &mode);
@@ -442,6 +447,10 @@ static void releaseMonitor(_GLFWwindow* window)
if (window->monitor->window != window)
return;
_glfw.win32.acquiredMonitorCount--;
if (!_glfw.win32.acquiredMonitorCount)
SetThreadExecutionState(ES_CONTINUOUS);
_glfwInputMonitorWindow(window->monitor, NULL);
_glfwRestoreVideoModeWin32(window->monitor);
}