xf86-video-intel: src/sna/sna_composite.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Mar 8 01:05:34 PST 2012


 src/sna/sna_composite.c |   18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

New commits:
commit 8e6166a0e87a00248d0d4925953c923850f5b840
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Mar 8 02:09:25 2012 +0000

    sna: Becareful not to reduce operators for superluminal colors
    
    wine-1.4 is such an example of a crazy application.
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=42606
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_composite.c b/src/sna/sna_composite.c
index 225008f..38ff99d 100644
--- a/src/sna/sna_composite.c
+++ b/src/sna/sna_composite.c
@@ -644,7 +644,7 @@ sna_composite_rectangles(CARD8		 op,
 		return;
 	}
 
-	if (color->alpha <= 0x00ff) {
+	if ((color->red|color->green|color->blue|color->alpha) <= 0x00ff) {
 		switch (op) {
 		case PictOpOver:
 		case PictOpOutReverse:
@@ -661,6 +661,22 @@ sna_composite_rectangles(CARD8		 op,
 			op = PictOpOverReverse;
 			break;
 		}
+	}
+	if (color->alpha <= 0x00ff) {
+		switch (op) {
+		case PictOpOver:
+		case PictOpOutReverse:
+			return;
+		case  PictOpInReverse:
+			op = PictOpClear;
+			break;
+		case  PictOpAtopReverse:
+			op = PictOpOut;
+			break;
+		case  PictOpXor:
+			op = PictOpOverReverse;
+			break;
+		}
 	} else if (color->alpha >= 0xff00) {
 		switch (op) {
 		case PictOpOver:


More information about the xorg-commit mailing list