mirror of
https://github.com/glfw/glfw.git
synced 2024-11-29 15:44:35 +00:00
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:
parent
366b90be1a
commit
355b46e6c5
@ -149,6 +149,8 @@ information on what to include when reporting a bug.
|
|||||||
- [Win32] Bugfix: Bitness test in `FindVulkan.cmake` was VS specific (#928)
|
- [Win32] Bugfix: Bitness test in `FindVulkan.cmake` was VS specific (#928)
|
||||||
- [Win32] Bugfix: `glfwVulkanSupported` emitted an error on systems with
|
- [Win32] Bugfix: `glfwVulkanSupported` emitted an error on systems with
|
||||||
a loader but no ICD (#916)
|
a loader but no ICD (#916)
|
||||||
|
- [Win32] Bugfix: Non-iconified full sreeen windows did not prevent screen
|
||||||
|
blanking or password enabled screensavers (#851)
|
||||||
- [X11] Replaced `_GLFW_HAS_XF86VM` compile-time option with dynamic loading
|
- [X11] Replaced `_GLFW_HAS_XF86VM` compile-time option with dynamic loading
|
||||||
- [X11] Bugfix: `glfwGetVideoMode` would segfault on Cygwin/X
|
- [X11] Bugfix: `glfwGetVideoMode` would segfault on Cygwin/X
|
||||||
- [X11] Bugfix: Dynamic X11 library loading did not use full sonames (#941)
|
- [X11] Bugfix: Dynamic X11 library loading did not use full sonames (#941)
|
||||||
|
@ -248,6 +248,7 @@ typedef struct _GLFWlibraryWin32
|
|||||||
{
|
{
|
||||||
HWND helperWindowHandle;
|
HWND helperWindowHandle;
|
||||||
DWORD foregroundLockTimeout;
|
DWORD foregroundLockTimeout;
|
||||||
|
int acquiredMonitorCount;
|
||||||
char* clipboardString;
|
char* clipboardString;
|
||||||
char keyName[64];
|
char keyName[64];
|
||||||
short int keycodes[512];
|
short int keycodes[512];
|
||||||
|
@ -422,6 +422,11 @@ static GLFWbool acquireMonitor(_GLFWwindow* window)
|
|||||||
GLFWbool status;
|
GLFWbool status;
|
||||||
int xpos, ypos;
|
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);
|
status = _glfwSetVideoModeWin32(window->monitor, &window->videoMode);
|
||||||
|
|
||||||
_glfwPlatformGetVideoMode(window->monitor, &mode);
|
_glfwPlatformGetVideoMode(window->monitor, &mode);
|
||||||
@ -442,6 +447,10 @@ static void releaseMonitor(_GLFWwindow* window)
|
|||||||
if (window->monitor->window != window)
|
if (window->monitor->window != window)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
_glfw.win32.acquiredMonitorCount--;
|
||||||
|
if (!_glfw.win32.acquiredMonitorCount)
|
||||||
|
SetThreadExecutionState(ES_CONTINUOUS);
|
||||||
|
|
||||||
_glfwInputMonitorWindow(window->monitor, NULL);
|
_glfwInputMonitorWindow(window->monitor, NULL);
|
||||||
_glfwRestoreVideoModeWin32(window->monitor);
|
_glfwRestoreVideoModeWin32(window->monitor);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user