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;
|
RECT rect;
|
||||||
if (GetUpdateRect(hwnd, &rect, FALSE)) {
|
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);
|
ValidateRect(hwnd, NULL);
|
||||||
SDL_SendWindowEvent(data->window, SDL_EVENT_WINDOW_EXPOSED, 0, 0);
|
SDL_SendWindowEvent(data->window, SDL_EVENT_WINDOW_EXPOSED, 0, 0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user