xf86-video-intel: src/sna/sna_damage.c
Chris Wilson
ickle at kemper.freedesktop.org
Wed Jun 13 14:58:22 PDT 2012
src/sna/sna_damage.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
New commits:
commit 221534abe2dc04fae8b8fc332104bca275d4863b
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 13 22:48:43 2012 +0100
sna: Only reduce damage addition to a region operation if clean
Some paths bypass operating upon the region as they do not have an
YX-banded set of boxes and so prefer to defer the costly construction of
the region till later. As a result, we have to be careful not to
overwrite any existing information if we do operate on the region after
setting the dirty boxes.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50744
Reported-by: Zdenek Kabelac <zdenek.kabelac at gmail.com>
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 1ea9e3c..6149be7 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -574,14 +574,9 @@ static struct sna_damage *__sna_damage_add_box(struct sna_damage *damage,
break;
}
- switch (REGION_NUM_RECTS(&damage->region)) {
- case 0:
- pixman_region_init_rects(&damage->region, box, 1);
- damage->extents = *box;
- return damage;
- case 1:
+ if (REGION_NUM_RECTS(&damage->region) <= 1) {
_pixman_region_union_box(&damage->region, box);
- damage->extents = damage->region.extents;
+ damage_union(damage, box);
return damage;
}
@@ -616,7 +611,7 @@ inline static struct sna_damage *__sna_damage_add(struct sna_damage *damage,
if (REGION_NUM_RECTS(&damage->region) <= 1) {
pixman_region_union(&damage->region, &damage->region, region);
- damage->extents = damage->region.extents;
+ damage_union(damage, ®ion->extents);
return damage;
}
More information about the xorg-commit
mailing list