From 4b5ded46f16f7f9b033418ea2de1d04215e09d4b Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sun, 21 Jul 2024 07:18:09 +0200 Subject: [PATCH] reduce waiting time in SetDisplayMode( --- src/render_d3d9.c | 6 +++++- src/render_gdi.c | 6 +++++- src/render_ogl.c | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/render_d3d9.c b/src/render_d3d9.c index 05f29b9..c8e911e 100644 --- a/src/render_d3d9.c +++ b/src/render_d3d9.c @@ -549,7 +549,8 @@ DWORD WINAPI d3d9_render_main(void) DWORD timeout = g_config.minfps > 0 ? g_ddraw.minfps_tick_len : INFINITE; while (g_ddraw.render.run && - (g_config.minfps < 0 || WaitForSingleObject(g_ddraw.render.sem, timeout) != WAIT_FAILED)) + (g_config.minfps < 0 || WaitForSingleObject(g_ddraw.render.sem, timeout) != WAIT_FAILED) && + g_ddraw.render.run) { #if _DEBUG dbg_draw_frame_info_start(); @@ -682,6 +683,9 @@ DWORD WINAPI d3d9_render_main(void) Sleep(50); } + if (!g_ddraw.render.run) + break; + #if _DEBUG dbg_draw_frame_info_end(); #endif diff --git a/src/render_gdi.c b/src/render_gdi.c index d67bee9..390fc56 100644 --- a/src/render_gdi.c +++ b/src/render_gdi.c @@ -41,7 +41,8 @@ DWORD WINAPI gdi_render_main(void) DWORD timeout = g_config.minfps > 0 ? g_ddraw.minfps_tick_len : INFINITE; while (g_ddraw.render.run && - (g_config.minfps < 0 || WaitForSingleObject(g_ddraw.render.sem, timeout) != WAIT_FAILED)) + (g_config.minfps < 0 || WaitForSingleObject(g_ddraw.render.sem, timeout) != WAIT_FAILED) && + g_ddraw.render.run) { #if _DEBUG dbg_draw_frame_info_start(); @@ -162,6 +163,9 @@ DWORD WINAPI gdi_render_main(void) LeaveCriticalSection(&g_ddraw.cs); + if (!g_ddraw.render.run) + break; + #if _DEBUG dbg_draw_frame_info_end(); #endif diff --git a/src/render_ogl.c b/src/render_ogl.c index ef18352..2242ca3 100644 --- a/src/render_ogl.c +++ b/src/render_ogl.c @@ -837,7 +837,8 @@ static void ogl_render() DWORD timeout = g_config.minfps > 0 ? g_ddraw.minfps_tick_len : INFINITE; while (g_ogl.use_opengl && g_ddraw.render.run && - (g_config.minfps < 0 || WaitForSingleObject(g_ddraw.render.sem, timeout) != WAIT_FAILED)) + (g_config.minfps < 0 || WaitForSingleObject(g_ddraw.render.sem, timeout) != WAIT_FAILED) && + g_ddraw.render.run) { #if _DEBUG dbg_draw_frame_info_start(); @@ -1201,6 +1202,9 @@ static void ogl_render() SwapBuffers(g_ddraw.render.hdc); + if (!g_ddraw.render.run) + break; + #if _DEBUG dbg_draw_frame_info_end(); #endif