Aric Stewart aric@codeweavers.com writes:
@@ -120,13 +122,58 @@ BOOL CDECL X11DRV_ScrollDC( HDC hdc, INT dx, INT dy, const RECT *lprcScroll, if( TRACE_ON( scroll)) dump_region( "Destination scroll region: ", DstRgn); /* if there are any, do it */ if( res > NULLREGION) {
RECT rect ;
RECT rect;
HRGN UpdateClip = CreateRectRgn(0,0,0,0);
/* Scroll Window does not scroll any already invalid areas */
if (GetUpdateRgn(WindowFromDC(hdc),UpdateRgn,FALSE)!=NULLREGION)
{
HRGN SrcMask;
/* Apparently special case. If the update Rgn fills the entire
DstRgn windows appears to ignore it */
This looks very wrong. Retrieving the update region from a DC doesn't seem right in the first place, and it you have to ignore it in some cases it shows that there's something else going on here.