From 0345cbdda3cf4c7a38e56379dd20f6eac31d0184 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Wed, 19 Oct 2022 23:48:20 +0200 Subject: [PATCH] only limit ticks in gui thread --- inc/dd.h | 1 + src/dd.c | 1 + src/utils.c | 3 +++ 3 files changed, 5 insertions(+) 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 };