[mutter] cursor: Hold reference to cursor tracker



commit fc1de74442a571e5f2ab5a037773b477fa564144
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Wed Dec 22 19:37:16 2021 +0100

    cursor: Hold reference to cursor tracker
    
    This is so that it can unregister from it on tear down. The tracker owns
    references to cursors too, but this cycle is already broken as the
    backend calls 'g_object_run_dispose()' when tearing the cursor tracker
    down.
    
    Fixes a crash on shutdown.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2181>

 src/backends/meta-cursor.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
---
diff --git a/src/backends/meta-cursor.c b/src/backends/meta-cursor.c
index aaca5ca2a4..53f2cdf4b5 100644
--- a/src/backends/meta-cursor.c
+++ b/src/backends/meta-cursor.c
@@ -279,6 +279,7 @@ meta_cursor_sprite_finalize (GObject *object)
   g_clear_pointer (&priv->texture, cogl_object_unref);
 
   meta_cursor_tracker_unregister_cursor_sprite (priv->cursor_tracker, sprite);
+  g_clear_object (&priv->cursor_tracker);
 
   G_OBJECT_CLASS (meta_cursor_sprite_parent_class)->finalize (object);
 }
@@ -296,7 +297,7 @@ meta_cursor_tracker_set_property (GObject      *object,
   switch (prop_id)
     {
     case PROP_CURSOR_TRACKER:
-      priv->cursor_tracker = g_value_get_object (value);
+      g_set_object (&priv->cursor_tracker, g_value_get_object (value));
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]