From e19d896dab73ba17747d3736746d2d027ed4bcc8 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sat, 8 Jun 2024 22:08:23 +0200 Subject: [PATCH] Revert "remove duplicate code" This reverts commit 0c6a0fba4b6388433f3a41fa423780b5d722e9bc. --- src/dd.c | 49 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/src/dd.c b/src/dd.c index 73ebcf6..cc2d248 100644 --- a/src/dd.c +++ b/src/dd.c @@ -541,18 +541,20 @@ HRESULT dd_GetMonitorFrequency(LPDWORD lpdwFreq) HRESULT dd_RestoreDisplayMode() { - if (g_ddraw.render.run) + if (!g_ddraw.render.run) { - EnterCriticalSection(&g_ddraw.cs); - g_ddraw.render.run = FALSE; - ReleaseSemaphore(g_ddraw.render.sem, 1, NULL); - LeaveCriticalSection(&g_ddraw.cs); + return DD_OK; + } - if (g_ddraw.render.thread) - { - WaitForSingleObject(g_ddraw.render.thread, INFINITE); - g_ddraw.render.thread = NULL; - } + EnterCriticalSection(&g_ddraw.cs); + g_ddraw.render.run = FALSE; + ReleaseSemaphore(g_ddraw.render.sem, 1, NULL); + LeaveCriticalSection(&g_ddraw.cs); + + if (g_ddraw.render.thread) + { + WaitForSingleObject(g_ddraw.render.thread, INFINITE); + g_ddraw.render.thread = NULL; } if (!g_config.windowed) @@ -1431,7 +1433,32 @@ ULONG dd_Release() cfg_save(); } - dd_RestoreDisplayMode(); + if (g_ddraw.render.run) + { + EnterCriticalSection(&g_ddraw.cs); + g_ddraw.render.run = FALSE; + ReleaseSemaphore(g_ddraw.render.sem, 1, NULL); + LeaveCriticalSection(&g_ddraw.cs); + + if (g_ddraw.render.thread) + { + WaitForSingleObject(g_ddraw.render.thread, INFINITE); + g_ddraw.render.thread = NULL; + } + } + + if (!g_config.windowed) + { + if (g_ddraw.renderer == d3d9_render_main && !g_config.nonexclusive) + { + if (!d3d9_reset(TRUE)) + d3d9_release(); + } + else + { + ChangeDisplaySettings(NULL, 0); + } + } if (g_ddraw.render.hdc) {