[metacity] surface: don't unconditionally subtract damage



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]