summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-10-19 13:09:19 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-10-19 13:11:24 +0100
commit87ba33bc0bcaf3c5160edfc61cff3ba0d28d3fd8 (patch)
tree8549d2a466ebbb68861c811b784cf87bec769590
parent63aa84ef57ff1e55d2df6d680d6bbf88be0619a6 (diff)
sna/damage: Avoid reducing the damage for simple tests
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_damage.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c
index efb1cfe6..f6ffef0b 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -480,7 +480,7 @@ struct sna_damage *_sna_damage_is_all(struct sna_damage *damage,
BoxRec box;
if (damage->mode == SUBTRACT)
- __sna_damage_reduce(damage);
+ return damage;
box.x1 = box.y1 = 0;
box.x2 = width;
@@ -658,8 +658,16 @@ static int _sna_damage_contains_box(struct sna_damage *damage,
if (!sna_damage_maybe_contains_box(damage, box))
return PIXMAN_REGION_OUT;
- if (damage->n)
+ if (damage->n) {
+ if (damage->mode != SUBTRACT) {
+ int ret = pixman_region_contains_rectangle(&damage->region,
+ (BoxPtr)box);
+ if (ret == PIXMAN_REGION_IN)
+ return PIXMAN_REGION_IN;
+ }
+
__sna_damage_reduce(damage);
+ }
return pixman_region_contains_rectangle(&damage->region, (BoxPtr)box);
}