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

Chris Wilson ickle at kemper.freedesktop.org
Fri Oct 18 13:18:38 PDT 2013


 src/sna/sna_damage.c |   23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

New commits:
commit db086d02affe5109202dc9ee06c9e728a3ff0f3f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Oct 18 17:30:18 2013 +0100

    sna: Do a quick pass on dirty damage before reduction
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c
index b921d94..5730a25 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -1277,7 +1277,8 @@ fastcall struct sna_damage *_sna_damage_subtract_boxes(struct sna_damage *damage
 static int __sna_damage_contains_box(struct sna_damage *damage,
 				     const BoxRec *box)
 {
-	int ret;
+	const BoxRec *b;
+	int n, count, ret;
 
 	if (!damage)
 		return PIXMAN_REGION_OUT;
@@ -1295,9 +1296,29 @@ static int __sna_damage_contains_box(struct sna_damage *damage,
 	if (damage->mode == DAMAGE_ADD) {
 		if (ret == PIXMAN_REGION_IN)
 			return ret;
+
+		count = damage->embedded_box.size;
+		if (list_is_empty(&damage->embedded_box.list))
+			count -= damage->remain;
+
+		b = damage->embedded_box.box;
+		for (n = 0; n < count; n++) {
+			if (box_contains(&b[n], box))
+				return PIXMAN_REGION_IN;
+		}
 	} else {
 		if (ret == PIXMAN_REGION_OUT)
 			return ret;
+
+		count = damage->embedded_box.size;
+		if (list_is_empty(&damage->embedded_box.list))
+			count -= damage->remain;
+
+		b = damage->embedded_box.box;
+		for (n = 0; n < count; n++) {
+			if (box_contains(&b[n], box))
+				return PIXMAN_REGION_OUT;
+		}
 	}
 
 	__sna_damage_reduce(damage);


More information about the xorg-commit mailing list