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

Chris Wilson ickle at kemper.freedesktop.org
Sat Dec 24 04:16:46 PST 2011


 src/sna/sna_damage.c |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

New commits:
commit cc21d3fa045209861564cf240a9a082e0bdb63f8
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Dec 24 12:17:43 2011 +0000

    sna/damage: Fix the is-contained test
    
    It was a non-overlapping test which is almost the reverse of what was
    intended.
    
    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 b713028..8b5ca7b 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -135,7 +135,7 @@ static const char *_debug_describe_damage(char *buf, int max,
 			sprintf(damage_str, "%c[ ...]",
 				damage->mode == DAMAGE_SUBTRACT ? '-' : '+');
 		} else
-			damage_str = "";
+			damage_str[0] = '\0';
 		snprintf(buf, max, "[[(%d, %d), (%d, %d)]: %s %s]",
 			 damage->extents.x1, damage->extents.y1,
 			 damage->extents.x2, damage->extents.y2,
@@ -922,10 +922,10 @@ struct sna_damage *_sna_damage_is_all(struct sna_damage *damage,
 
 static bool box_contains(const BoxRec *a, const BoxRec *b)
 {
-	if (b->x2 <= a->x1 || b->x1 >= a->x2)
+	if (b->x1 < a->x1 || b->x2 > a->x2)
 		return false;
 
-	if (b->y2 <= a->y1 || b->y1 >= a->y2)
+	if (b->y1 < a->y1 || b->y2 > a->y2)
 		return false;
 
 	return true;
@@ -1042,6 +1042,11 @@ inline static struct sna_damage *__sna_damage_subtract_box(struct sna_damage *da
 		return damage;
 
 	if (damage->mode != DAMAGE_SUBTRACT) {
+		if (box_contains(box, &damage->extents)) {
+			__sna_damage_destroy(damage);
+			return NULL;
+		}
+
 		if (damage->dirty)
 			__sna_damage_reduce(damage);
 


More information about the xorg-commit mailing list