[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