[gdi] fix handling of empty regions

Do not abort if an empty update region is found, ignore it.
This commit is contained in:
Armin Novak
2026-02-17 16:10:49 +01:00
parent d015ba58de
commit cf86ec9ed0
2 changed files with 12 additions and 4 deletions

View File

@@ -101,7 +101,7 @@ BOOL gdi_ClipCoords(HGDI_DC hdc, INT32* x, INT32* y, INT32* w, INT32* h, INT32*
if (!gdi_RgnToRect(hdc->clip, &clip))
return TRUE;
if (!gdi_CRgnToRect(0, 0, hBmp->width, hBmp->height, &bmp))
return FALSE;
return TRUE;
if (clip.left < bmp.left)
clip.left = bmp.left;
@@ -123,7 +123,7 @@ BOOL gdi_ClipCoords(HGDI_DC hdc, INT32* x, INT32* y, INT32* w, INT32* h, INT32*
}
if (!gdi_CRgnToRect(*x, *y, *w, *h, &coords))
return FALSE;
return TRUE;
if (coords.right >= clip.left && coords.left <= clip.right && coords.bottom >= clip.top &&
coords.top <= clip.bottom)

View File

@@ -655,6 +655,16 @@ inline BOOL gdi_InvalidateRegion(HGDI_DC hdc, INT32 x, INT32 y, INT32 w, INT32 h
if (!gdi_SetRgn(&cinvalid[hdc->hwnd->ninvalid++], x, y, w, h))
return FALSE;
if (!gdi_CRgnToRect(x, y, w, h, &rgn))
{
invalid->x = 0;
invalid->y = 0;
invalid->w = 0;
invalid->h = 0;
invalid->null = TRUE;
return TRUE;
}
if (invalid->null)
{
invalid->x = x;
@@ -665,8 +675,6 @@ inline BOOL gdi_InvalidateRegion(HGDI_DC hdc, INT32 x, INT32 y, INT32 w, INT32 h
return TRUE;
}
if (!gdi_CRgnToRect(x, y, w, h, &rgn))
return FALSE;
if (!gdi_RgnToRect(invalid, &inv))
return FALSE;