diff options
Diffstat (limited to 'src/sna/sna_accel.c')
-rw-r--r-- | src/sna/sna_accel.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 13fe6ed6..ce04ca0d 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -14382,16 +14382,15 @@ sna_poly_fill_rect(DrawablePtr draw, GCPtr gc, int n, xRectangle *rect) RegionTranslate(®ion, dx, dy); } - if (region_subsumes_drawable(®ion, &pixmap->drawable)) { - discard_cpu_damage(sna, priv); - hint |= IGNORE_CPU | REPLACES; - } else { - if ((flags & 2) == 0) - hint |= IGNORE_CPU; - if (priv->cpu_damage && - region_subsumes_damage(®ion, priv->cpu_damage)) { + if ((flags & 2) == 0) { + hint |= IGNORE_CPU; + if (region_subsumes_drawable(®ion, &pixmap->drawable)) { discard_cpu_damage(sna, priv); - hint |= IGNORE_CPU; + hint |= REPLACES; + } else { + if (priv->cpu_damage && + region_subsumes_damage(®ion, priv->cpu_damage)) + discard_cpu_damage(sna, priv); } } if (priv->cpu_damage == NULL) { |