From 7cbc65878ae2f919eb493493de059615720882ea Mon Sep 17 00:00:00 2001 From: narzoul Date: Sat, 7 Apr 2018 17:29:47 +0200 Subject: [PATCH] Update visible regions of all top-level windows on pos changes --- DDrawCompat/Gdi/WinProc.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/DDrawCompat/Gdi/WinProc.cpp b/DDrawCompat/Gdi/WinProc.cpp index 25b0f91..a1e258e 100644 --- a/DDrawCompat/Gdi/WinProc.cpp +++ b/DDrawCompat/Gdi/WinProc.cpp @@ -35,6 +35,7 @@ namespace void redrawChangedWindowRegion(HWND hwnd, const WindowData& prevData, const WindowData& data); void redrawUncoveredRegion(const WindowData& prevData, const WindowData& data); void removeDropShadow(HWND hwnd); + BOOL CALLBACK updateWindowData(HWND hwnd, LPARAM lParam); LRESULT CALLBACK callWndRetProc(int nCode, WPARAM wParam, LPARAM lParam) { @@ -189,8 +190,8 @@ namespace Compat::ScopedCriticalSection lock(Gdi::g_gdiCriticalSection); WindowData prevData = g_windowData[hwnd]; - WindowData data = getWindowData(hwnd); - g_windowData[hwnd] = data; + EnumThreadWindows(Gdi::getGdiThreadId(), updateWindowData, 0); + WindowData& data = g_windowData[hwnd]; for (auto notifyFunc : g_windowPosChangeNotifyFuncs) { @@ -259,6 +260,12 @@ namespace SetClassLongPtr(hwnd, GCL_STYLE, style ^ CS_DROPSHADOW); } } + + BOOL CALLBACK updateWindowData(HWND hwnd, LPARAM /*lParam*/) + { + g_windowData[hwnd] = getWindowData(hwnd); + return TRUE; + } } namespace Gdi