Extensive ScrollDC investigation (resubmit)

Alexandre Julliard julliard at winehq.org
Fri Apr 24 07:58:06 CDT 2009


Aric Stewart <aric at 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.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list