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.main
parent
17bdea7a91
commit
05b701f12e
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue