From 02dcfd96b6483053e206d7f226c11d4162a0c9ef Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Tue, 1 Aug 2023 13:47:27 +0200 Subject: [PATCH] remove accuratetimers setting --- inc/dd.h | 1 - src/config.c | 11 +++-------- src/dd.c | 15 +++++++-------- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/inc/dd.h b/inc/dd.h index 857804a..290886d 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -141,7 +141,6 @@ typedef struct CNCDDRAW int show_cursor_count; BOOL allow_wmactivate; BOOL opengl_core; - BOOL accurate_timers; BOOL resizable; BOOL toggle_borderless; BOOL nonexclusive; diff --git a/src/config.c b/src/config.c index a47b6f9..5509907 100644 --- a/src/config.c +++ b/src/config.c @@ -33,7 +33,6 @@ void cfg_load() g_ddraw->vsync = cfg_get_bool("vsync", FALSE); g_ddraw->noactivateapp = cfg_get_bool("noactivateapp", FALSE); g_ddraw->vhack = cfg_get_bool("vhack", FALSE); - g_ddraw->accurate_timers = cfg_get_bool("accuratetimers", FALSE); g_ddraw->resizable = cfg_get_bool("resizable", TRUE); g_ddraw->toggle_borderless = cfg_get_bool("toggle_borderless", FALSE); g_ddraw->nonexclusive = cfg_get_bool("nonexclusive", FALSE); @@ -94,15 +93,13 @@ void cfg_load() } /* can't fully set it up here due to missing g_ddraw->mode.dmDisplayFrequency */ - if (g_ddraw->accurate_timers || g_ddraw->vsync) - g_fpsl.htimer = CreateWaitableTimer(NULL, TRUE, NULL); + g_fpsl.htimer = CreateWaitableTimer(NULL, TRUE, NULL); g_ddraw->maxgameticks = cfg_get_int("maxgameticks", 0); if (g_ddraw->maxgameticks > 0 && g_ddraw->maxgameticks <= 1000) { - if (g_ddraw->accurate_timers) - g_ddraw->ticks_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL); + g_ddraw->ticks_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL); float len = 1000.0f / g_ddraw->maxgameticks; g_ddraw->ticks_limiter.tick_length_ns = (LONGLONG)(len * 10000); @@ -112,8 +109,7 @@ void cfg_load() if (g_ddraw->maxgameticks >= 0 || g_ddraw->maxgameticks == -2) { /* always using 60 fps for flip... */ - if (g_ddraw->accurate_timers) - g_ddraw->flip_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL); + g_ddraw->flip_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL); float flip_len = 1000.0f / 60; g_ddraw->flip_limiter.tick_length_ns = (LONGLONG)(flip_len * 10000); @@ -351,7 +347,6 @@ static void cfg_create_ini() "max_resolutions=0\n" "limit_bltfast=false\n" "game_handles_close=false\n" - "accuratetimers=false\n" "fixpitch=true\n" "fixnotresponding=false\n" "lock_surfaces=false\n" diff --git a/src/dd.c b/src/dd.c index 0a89b35..4ef8b89 100644 --- a/src/dd.c +++ b/src/dd.c @@ -1030,21 +1030,20 @@ HRESULT dd_WaitForVerticalBlank(DWORD dwFlags, HANDLE hEvent) if (g_ddraw->flip_limiter.htimer) { - FILETIME last_flip_ft = { 0 }; - GetSystemTimeAsFileTime(&last_flip_ft); + FILETIME ft = { 0 }; + GetSystemTimeAsFileTime(&ft); - if (!g_ddraw->flip_limiter.due_time.QuadPart) + if (CompareFileTime((FILETIME*)&g_ddraw->flip_limiter.due_time, &ft) == -1) { - memcpy(&g_ddraw->flip_limiter.due_time, &last_flip_ft, sizeof(LARGE_INTEGER)); + memcpy(&g_ddraw->flip_limiter.due_time, &ft, sizeof(LARGE_INTEGER)); } else { - while (CompareFileTime((FILETIME*)&g_ddraw->flip_limiter.due_time, &last_flip_ft) == -1) - g_ddraw->flip_limiter.due_time.QuadPart += g_ddraw->flip_limiter.tick_length_ns; - - SetWaitableTimer(g_ddraw->flip_limiter.htimer, &g_ddraw->flip_limiter.due_time, 0, NULL, NULL, FALSE); WaitForSingleObject(g_ddraw->flip_limiter.htimer, g_ddraw->flip_limiter.tick_length * 2); } + + g_ddraw->flip_limiter.due_time.QuadPart += g_ddraw->flip_limiter.tick_length_ns; + SetWaitableTimer(g_ddraw->flip_limiter.htimer, &g_ddraw->flip_limiter.due_time, 0, NULL, NULL, FALSE); } else {