From 6269950402de4ef917a7aa9e39523152aee81d50 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 28 Jul 2023 05:50:23 +0200 Subject: [PATCH] #227 fix changing resolutions bug --- src/dd.c | 5 ++++- src/winapi_hooks.c | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/dd.c b/src/dd.c index d810611..e2ffced 100644 --- a/src/dd.c +++ b/src/dd.c @@ -1131,7 +1131,10 @@ ULONG dd_Release() DeleteCriticalSection(&g_ddraw->cs); /* restore old wndproc, subsequent ddraw creation will otherwise fail */ - real_SetWindowLongA(g_ddraw->hwnd, GWL_WNDPROC, (LONG)g_ddraw->wndproc); + if (g_ddraw->hwnd) + { + real_SetWindowLongA(g_ddraw->hwnd, GWL_WNDPROC, (LONG)g_ddraw->wndproc); + } HeapFree(GetProcessHeap(), 0, g_ddraw); g_ddraw = NULL; diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index 9c94b8a..2aeddf0 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -969,6 +969,13 @@ BOOL WINAPI fake_DestroyWindow(HWND hWnd) { BOOL result = real_DestroyWindow(hWnd); + if (result && g_ddraw && hWnd == g_ddraw->hwnd) + { + g_ddraw->hwnd = NULL; + g_ddraw->wndproc = NULL; + g_ddraw->render.hdc = NULL; + } + if (g_ddraw && g_ddraw->hwnd != hWnd && g_ddraw->bnet_active) { RedrawWindow(NULL, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN);