From bbf529f6efc39c3929d6695371a8ee6efcf30232 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Mon, 2 Oct 2023 02:19:21 +0200 Subject: [PATCH] limit fps also with maxfps=0 --- src/dd.c | 4 +++- src/fps_limiter.c | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/dd.c b/src/dd.c index 37ffb2a..9e2fb7a 100644 --- a/src/dd.c +++ b/src/dd.c @@ -1189,7 +1189,9 @@ HRESULT dd_WaitForVerticalBlank(DWORD dwFlags, HANDLE hEvent) { if (g_config.maxgameticks == -2) { - BOOL open = !(g_config.maxfps < 0 || (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)); + BOOL open = + !(g_config.maxfps < 0 || + (g_config.vsync && (!g_config.maxfps || g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)); if (fpsl_dwm_flush() || fpsl_wait_for_vblank(open)) return DD_OK; diff --git a/src/fps_limiter.c b/src/fps_limiter.c index d157612..b8a8ac0 100644 --- a/src/fps_limiter.c +++ b/src/fps_limiter.c @@ -14,7 +14,7 @@ void fpsl_init() g_fpsl.tick_length_ns = 0; g_fpsl.tick_length = 0; - if (max_fps < 0 || (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)) + if (max_fps < 0 || (g_config.vsync && (!g_config.maxfps || g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency))) max_fps = g_ddraw->mode.dmDisplayFrequency; if (max_fps > 1000) @@ -125,7 +125,8 @@ void fpsl_frame_start() void fpsl_frame_end() { - if (g_config.maxfps < 0 || (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)) + if (g_config.maxfps < 0 || + (g_config.vsync && (!g_config.maxfps || g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency)) { if (fpsl_dwm_flush() || fpsl_wait_for_vblank(TRUE)) return; @@ -135,7 +136,7 @@ void fpsl_frame_end() { if (g_fpsl.htimer) { - if (g_config.vsync && g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency) + if (g_config.vsync && (!g_config.maxfps || g_config.maxfps >= g_ddraw->mode.dmDisplayFrequency) { WaitForSingleObject(g_fpsl.htimer, g_fpsl.tick_length * 2); LARGE_INTEGER due_time = { .QuadPart = -g_fpsl.tick_length_ns };