In RDW_UpdateRgn(), if hRgn is zero, clear the windows update region
if it is an empty region.
This commit is contained in:
parent
d83ed49148
commit
15a4fef9a3
@ -459,7 +459,21 @@ static void RDW_UpdateRgns( WND* wndPtr, HRGN hRgn, UINT flags, BOOL firstRecurs
|
|||||||
wndPtr->hrgnUpdate = (HRGN)1;
|
wndPtr->hrgnUpdate = (HRGN)1;
|
||||||
}
|
}
|
||||||
else
|
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) )
|
if( !bHadOne && !(wndPtr->flags & WIN_INTERNAL_PAINT) )
|
||||||
add_paint_count( wndPtr->hwndSelf, 1 );
|
add_paint_count( wndPtr->hwndSelf, 1 );
|
||||||
@ -665,7 +679,7 @@ static HRGN RDW_Paint( WND* wndPtr, HRGN hrgn, UINT flags, UINT ex )
|
|||||||
{
|
{
|
||||||
if (SendMessageW( hWnd, (bIcon) ? WM_ICONERASEBKGND : WM_ERASEBKGND,
|
if (SendMessageW( hWnd, (bIcon) ? WM_ICONERASEBKGND : WM_ERASEBKGND,
|
||||||
(WPARAM)hDC, 0 ))
|
(WPARAM)hDC, 0 ))
|
||||||
wndPtr->flags &= ~WIN_NEEDS_ERASEBKGND;
|
wndPtr->flags &= ~WIN_NEEDS_ERASEBKGND;
|
||||||
ReleaseDC( hWnd, hDC );
|
ReleaseDC( hWnd, hDC );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user