xserver/fb fbcompose.c,1.29,1.30

Lars Knoll <xserver-commit-u7BhqnqprCWvj1b/[email protected]> Mon, 4 Jul 2005 07:43:23 -0700 (PDT)
Newsgroups gmane.comp.freedesktop.xserver.cvs
Message-ID <[email protected]>
Committed by: lars

Update of /cvs/xserver/xserver/fb
In directory gabe:/tmp/cvs-serv24517

Modified Files:
	fbcompose.c 
Log Message:
don't be too smart and try to replace PictOpOver by PictOpSrc
when we have an external alpha map.


Index: fbcompose.c
===================================================================
RCS file: /cvs/xserver/xserver/fb/fbcompose.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- fbcompose.c	4 Jul 2005 12:18:51 -0000	1.29
+++ fbcompose.c	4 Jul 2005 14:43:21 -0000	1.30
@@ -3214,9 +3214,6 @@
     fbFetchTransformed(pict, x, y, width, buffer);
     fbFetchTransformed(pict->alphaMap, x - pict->alphaOrigin.x, y - pict->alphaOrigin.y, width, alpha_buffer);
     for (i = 0; i < width; ++i) {
-        /* XXX i absolutely hate the way i'm doing it right now.
-           there's definitely million better ways or handling
-           external alpha */
         int a = alpha_buffer[i]>>24;
         buffer[i] = (a << 24)
                  | (div_255(Red(buffer[i]) * a) << 16)
@@ -3428,7 +3425,7 @@
 	maskRepeat = pMask->repeat == RepeatNormal && !pMask->transform
                      && (pMask->pDrawable->width != 1 || pMask->pDrawable->height != 1);
 
-    if (op == PictOpOver && !pMask && !pSrc->transform && !PICT_FORMAT_A(pSrc->format))
+    if (op == PictOpOver && !pMask && !pSrc->transform && !PICT_FORMAT_A(pSrc->format) && !pSrc->alphaMap)
         op = PictOpSrc;
 
     if (!miComputeCompositeRegion (&region,