[PATCH v2] Try and get overlapping cases fixed.

Stefan Ring stefanrin at gmail.com
Mon Aug 8 05:35:20 PDT 2011


> @@ -76,8 +77,10 @@ fbBlt (FbBits   *srcLine,
>     }
>  #endif
>
> -    if (alu == GXcopy && pm == FB_ALLONES && !reverse &&
> -            !(srcX & 7) && !(dstX & 7) && !(width & 7)) {
> +    careful = (width >> 3) > (abs(srcLine-dstLine) << (FB_SHIFT - 3));
> +
> +    if (alu == GXcopy && pm == FB_ALLONES && !careful &&
> +            !(srcX & 7) && !(dstX & 7) && !(width & 7) && !(bpp & 7)) {
>         int i;
>         CARD8 *src = (CARD8 *) srcLine;
>         CARD8 *dst = (CARD8 *) dstLine;

This works very well; I have been running it for an entire month now
without any trouble.

Stefan


More information about the xorg-devel mailing list