diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-19 13:09:19 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-19 13:11:24 +0100 |
commit | 87ba33bc0bcaf3c5160edfc61cff3ba0d28d3fd8 (patch) | |
tree | 8549d2a466ebbb68861c811b784cf87bec769590 | |
parent | 63aa84ef57ff1e55d2df6d680d6bbf88be0619a6 (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.c | 12 |
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); } |