In RDW_UpdateRgn(), if hRgn is zero, clear the windows update region
if it is an empty region.
diff --git a/windows/painting.c b/windows/painting.c
index fb6a03c..ad92841 100644
--- a/windows/painting.c
+++ b/windows/painting.c
@@ -459,7 +459,21 @@
wndPtr->hrgnUpdate = (HRGN)1;
}
else
- hRgn = wndPtr->hrgnUpdate; /* this is a trick that depends on code in PAINT_RedrawWindow() */
+ {
+ /* hRgn is zero */
+ if( wndPtr->hrgnUpdate > (HRGN)1)
+ {
+ GetRgnBox( wndPtr->hrgnUpdate, &r );
+ if( IsRectEmpty( &r ) )
+ {
+ DeleteObject( wndPtr->hrgnUpdate );
+ wndPtr->hrgnUpdate = 0;
+ goto end;
+ }
+ }
+ hRgn = wndPtr->hrgnUpdate; /* this is a trick that depends
+ * on code in RDW_Paint() */
+ }
if( !bHadOne && !(wndPtr->flags & WIN_INTERNAL_PAINT) )
add_paint_count( wndPtr->hwndSelf, 1 );
@@ -665,7 +679,7 @@
{
if (SendMessageW( hWnd, (bIcon) ? WM_ICONERASEBKGND : WM_ERASEBKGND,
(WPARAM)hDC, 0 ))
- wndPtr->flags &= ~WIN_NEEDS_ERASEBKGND;
+ wndPtr->flags &= ~WIN_NEEDS_ERASEBKGND;
ReleaseDC( hWnd, hDC );
}
}