mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-06 03:18:13 +00:00
Fix win32 windows with WS_EX_COMPOSITED style continuing to receive WM_PAINT messages after ValidateRect
- Composited windows seem to need to actually paint (or appear to paint) through calls to Begin/EndPaint to properly validate their update region. If not done they will continue to receive WM_PAINT messages for the same region.
This commit is contained in:
@@ -1358,6 +1358,16 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
RECT rect;
|
||||
if (GetUpdateRect(hwnd, &rect, FALSE)) {
|
||||
const LONG style = GetWindowLong(hwnd, GWL_EXSTYLE);
|
||||
|
||||
/* Composited windows will continue to receive WM_PAINT messages for update
|
||||
regions until the window is actually painted through Begin/EndPaint */
|
||||
if (style & WS_EX_COMPOSITED) {
|
||||
PAINTSTRUCT ps;
|
||||
BeginPaint(hwnd, &ps);
|
||||
EndPaint(hwnd, &ps);
|
||||
}
|
||||
|
||||
ValidateRect(hwnd, NULL);
|
||||
SDL_SendWindowEvent(data->window, SDL_EVENT_WINDOW_EXPOSED, 0, 0);
|
||||
}
|
||||
|
Reference in New Issue
Block a user