From e4221a10d0c7e84d141765948489f264a2ff3105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= 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