diff --git a/src/dllmain.c b/src/dllmain.c index 37936a1..39d7dbb 100644 --- a/src/dllmain.c +++ b/src/dllmain.c @@ -23,6 +23,7 @@ PVOID FakePrimarySurface; HMODULE g_ddraw_module; +static BOOL g_screensaver_disabled; BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved) { @@ -131,7 +132,15 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved) set_aware(); } - SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED); + BOOL screensaver_enabled = FALSE; + SystemParametersInfoA(SPI_GETSCREENSAVEACTIVE, 0, &screensaver_enabled, 0); + + if (screensaver_enabled) + { + SystemParametersInfoA(SPI_SETSCREENSAVEACTIVE, FALSE, NULL, 0); + g_screensaver_disabled = TRUE; + } + indeo_enable(); timeBeginPeriod(1); hook_init(); @@ -151,7 +160,11 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved) keyboard_hook_exit(); dinput_hook_exit(); hook_exit(); - SetThreadExecutionState(ES_CONTINUOUS); + + if (g_screensaver_disabled) + { + SystemParametersInfoA(SPI_SETSCREENSAVEACTIVE, TRUE, NULL, 0); + } ULONG(WINAPI* remove_handler)(PVOID) = (void*)real_GetProcAddress(GetModuleHandleA("Kernel32.dll"), "RemoveVectoredExceptionHandler");