[metacity] surface: don't unconditionally subtract damage
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] surface: don't unconditionally subtract damage
- Date: Tue, 15 Oct 2019 21:13:32 +0000 (UTC)
commit 5f37bfc9b59fb98dee3071bd70559320a17e4de8
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Tue Oct 15 21:07:56 2019 +0300
surface: don't unconditionally subtract damage
src/compositor/meta-surface.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
---
diff --git a/src/compositor/meta-surface.c b/src/compositor/meta-surface.c
index 06dba810..db2c1ac8 100644
--- a/src/compositor/meta-surface.c
+++ b/src/compositor/meta-surface.c
@@ -35,6 +35,8 @@ typedef struct
Display *xdisplay;
Damage damage;
+ gboolean damage_received;
+
Pixmap pixmap;
int x;
@@ -567,6 +569,8 @@ meta_surface_process_damage (MetaSurface *self,
priv = meta_surface_get_instance_private (self);
+ priv->damage_received = TRUE;
+
meta_compositor_queue_redraw (priv->compositor);
}
@@ -672,9 +676,14 @@ meta_surface_pre_paint (MetaSurface *self)
damage = XFixesCreateRegion (priv->xdisplay, NULL, 0);
- meta_error_trap_push (priv->display);
- XDamageSubtract (priv->xdisplay, priv->damage, None, damage);
- meta_error_trap_pop (priv->display);
+ if (priv->damage_received)
+ {
+ meta_error_trap_push (priv->display);
+ XDamageSubtract (priv->xdisplay, priv->damage, None, damage);
+ meta_error_trap_pop (priv->display);
+
+ priv->damage_received = FALSE;
+ }
update_shape_region (self, damage);
update_opaque_region (self, damage);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]