summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-11-14 14:11:56 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2011-11-14 14:13:10 +0000
commit5647e2981d81fd2b5cdb22d544f83d2d0f9445c9 (patch)
treeae569e4afe4bbc961f4d4939ec039305676df05f
parent405b015fe255c75f91b0f3fe93f06bd14faee5a1 (diff)
sna/damage: Always reduce damage for testing PIXMAN_REGION_OUT
Reported-by: Clemens Eisserer <linuxhippy@gmail.com> References: https://bugs.freedesktop.org/show_bug.cgi?id=42414 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_damage.c9
-rw-r--r--src/sna/sna_damage.h2
2 files changed, 5 insertions, 6 deletions
diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c
index 95a92a53..bc5740de 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -1138,10 +1138,11 @@ static int _sna_damage_contains_box(struct sna_damage *damage,
__sna_damage_reduce(damage);
ret = pixman_region_contains_rectangle(&damage->region, (BoxPtr)box);
- if (damage->n == 0)
+ if (ret != PIXMAN_REGION_OUT || damage->n == 0)
return ret;
- return ret == PIXMAN_REGION_IN ? PIXMAN_REGION_IN : PIXMAN_REGION_OUT;
+ __sna_damage_reduce(damage);
+ return pixman_region_contains_rectangle(&damage->region, (BoxPtr)box);
}
#if DEBUG_DAMAGE
@@ -1246,9 +1247,7 @@ struct sna_damage *_sna_damage_reduce(struct sna_damage *damage)
{
DBG(("%s\n", __FUNCTION__));
- if (damage->n)
- __sna_damage_reduce(damage);
-
+ __sna_damage_reduce(damage);
if (!pixman_region_not_empty(&damage->region)) {
__sna_damage_destroy(damage);
damage = NULL;
diff --git a/src/sna/sna_damage.h b/src/sna/sna_damage.h
index 7fc6d024..5c88cf6e 100644
--- a/src/sna/sna_damage.h
+++ b/src/sna/sna_damage.h
@@ -133,7 +133,7 @@ static inline void sna_damage_reduce(struct sna_damage **damage)
if (*damage == NULL)
return;
- if ((*damage)->mode != DAMAGE_ALL)
+ if ((*damage)->n)
*damage = _sna_damage_reduce(*damage);
}