From ac1829f6290a51de95ce44b521ef89ca0f22cf66 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Wed, 18 Aug 2021 16:25:29 +0200 Subject: [PATCH] #114 add temporary workaround for "not responding" windows --- inc/dd.h | 1 + src/config.c | 1 + src/ddsurface.c | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/inc/dd.h b/inc/dd.h index 8949cb5..ba9bd3e 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -124,6 +124,7 @@ typedef struct CNCDDRAW BOOL fixpitch; int fixchilds; BOOL fixwndprochook; + BOOL fixnotresponding; BOOL d3d9linear; BOOL gdilinear; int resolutions; diff --git a/src/config.c b/src/config.c index 5275f66..cf3e54b 100644 --- a/src/config.c +++ b/src/config.c @@ -51,6 +51,7 @@ void cfg_load() g_ddraw->fixpitch = cfg_get_bool("fixpitch", FALSE); g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT); g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE); + g_ddraw->fixnotresponding = cfg_get_bool("fixnotresponding", FALSE); g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE); g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE); g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL); diff --git a/src/ddsurface.c b/src/ddsurface.c index 8c8b417..9f7b89c 100644 --- a/src/ddsurface.c +++ b/src/ddsurface.c @@ -1083,6 +1083,12 @@ HRESULT dds_Lock( { dbg_dump_dds_lock_flags(dwFlags); + if (g_ddraw && g_ddraw->fixnotresponding) + { + MSG msg; /* workaround for "Not Responding" window problem */ + PeekMessage(&msg, g_ddraw->hwnd, 0, 0, PM_NOREMOVE); + } + HRESULT ret = dds_GetSurfaceDesc(This, lpDDSurfaceDesc); if (lpDestRect && lpDDSurfaceDesc)