Cyril Brulebois <k...@debian.org> writes: > diff --git a/fb/fbblt.c b/fb/fbblt.c > index 38271c0..b6e7785 100644 > --- a/fb/fbblt.c > +++ b/fb/fbblt.c > @@ -65,6 +65,7 @@ fbBlt (FbBits *srcLine, > int n, nmiddle; > Bool destInvarient; > int startbyte, endbyte; > + int careful; > FbDeclareMergeRop (); > > #ifdef FB_24BIT > @@ -76,7 +77,9 @@ fbBlt (FbBits *srcLine, > } > #endif > > - if (alu == GXcopy && pm == FB_ALLONES && !reverse && > + careful = (width * (bpp / 8) > abs(srcLine-dstLine)) || (bpp % 8); > + > + if (alu == GXcopy && pm == FB_ALLONES && !careful && > !(srcX & 7) && !(dstX & 7) && !(width & 7)) { > int i; > CARD8 *src = (CARD8 *) srcLine;
Isn't there still a problem here, where "srcLine-dstLine" is number of uint32_t's, whereas "width * (bpp / 8)" is number of bytes? Soren _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel