diff --git a/inc/dd.h b/inc/dd.h index 88b5065..d77962f 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -173,6 +173,7 @@ typedef struct CNCDDRAW BOOL show_driver_warning; SPEEDLIMITER ticks_limiter; SPEEDLIMITER flip_limiter; + DWORD gui_thread; } CNCDDRAW; diff --git a/src/dd.c b/src/dd.c index 0aeff1c..b118b7f 100644 --- a/src/dd.c +++ b/src/dd.c @@ -890,6 +890,7 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags) hook_init(); g_ddraw->wndproc = (WNDPROC)real_SetWindowLongA(g_ddraw->hwnd, GWL_WNDPROC, (LONG)fake_WndProc); + g_ddraw->gui_thread = GetWindowThreadProcessId(hwnd, NULL); if (!g_ddraw->render.hdc) { diff --git a/src/utils.c b/src/utils.c index b2f7f87..40937d7 100644 --- a/src/utils.c +++ b/src/utils.c @@ -62,6 +62,9 @@ BOOL util_is_avx_supported() void util_limit_game_ticks() { + if (GetCurrentThreadId() != g_ddraw->gui_thread) + return; + if (g_ddraw->ticks_limiter.htimer) { FILETIME ft = { 0 };