Blob Blame History Raw
From e4221a10d0c7e84d141765948489f264a2ff3105 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Wed, 10 Jul 2019 16:06:57 +0200
Subject: [PATCH 16/28] surface-actor: Destroy the pending damage region on
 dispose

As the region isn't going to be used anymore, we can safely remove it on dispose

https://gitlab.gnome.org/GNOME/mutter/merge_requests/682
---
 src/compositor/meta-surface-actor.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/compositor/meta-surface-actor.c b/src/compositor/meta-surface-actor.c
index bf8c76f39..6996658ed 100644
--- a/src/compositor/meta-surface-actor.c
+++ b/src/compositor/meta-surface-actor.c
@@ -80,60 +80,61 @@ meta_surface_actor_pick (ClutterActor       *actor,
 
           rectangles[pos + 0] = rect.x;
           rectangles[pos + 1] = rect.y;
           rectangles[pos + 2] = rect.x + rect.width;
           rectangles[pos + 3] = rect.y + rect.height;
         }
 
       ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
       fb = cogl_get_draw_framebuffer ();
 
       cogl_color_init_from_4ub (&cogl_color, color->red, color->green, color->blue, color->alpha);
 
       pipeline = cogl_pipeline_new (ctx);
       cogl_pipeline_set_color (pipeline, &cogl_color);
       cogl_framebuffer_draw_rectangles (fb, pipeline, rectangles, n_rects);
       cogl_object_unref (pipeline);
     }
 
   clutter_actor_iter_init (&iter, actor);
 
   while (clutter_actor_iter_next (&iter, &child))
     clutter_actor_paint (child);
 }
 
 static void
 meta_surface_actor_dispose (GObject *object)
 {
   MetaSurfaceActor *self = META_SURFACE_ACTOR (object);
   MetaSurfaceActorPrivate *priv = self->priv;
 
+  g_clear_pointer (&priv->pending_damage, cairo_region_destroy);
   g_clear_pointer (&priv->input_region, cairo_region_destroy);
 
   G_OBJECT_CLASS (meta_surface_actor_parent_class)->dispose (object);
 }
 
 static void
 meta_surface_actor_class_init (MetaSurfaceActorClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
   ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
 
   object_class->dispose = meta_surface_actor_dispose;
   actor_class->pick = meta_surface_actor_pick;
 
   signals[REPAINT_SCHEDULED] = g_signal_new ("repaint-scheduled",
                                              G_TYPE_FROM_CLASS (object_class),
                                              G_SIGNAL_RUN_LAST,
                                              0,
                                              NULL, NULL, NULL,
                                              G_TYPE_NONE, 0);
 
   signals[SIZE_CHANGED] = g_signal_new ("size-changed",
                                         G_TYPE_FROM_CLASS (object_class),
                                         G_SIGNAL_RUN_LAST,
                                         0,
                                         NULL, NULL, NULL,
                                         G_TYPE_NONE, 0);
 
   g_type_class_add_private (klass, sizeof (MetaSurfaceActorPrivate));
 }
-- 
2.26.2