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>
This commit is contained in:
parent
287908e05a
commit
fc1de74442
@ -279,6 +279,7 @@ meta_cursor_sprite_finalize (GObject *object)
|
|||||||
g_clear_pointer (&priv->texture, cogl_object_unref);
|
g_clear_pointer (&priv->texture, cogl_object_unref);
|
||||||
|
|
||||||
meta_cursor_tracker_unregister_cursor_sprite (priv->cursor_tracker, sprite);
|
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);
|
G_OBJECT_CLASS (meta_cursor_sprite_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
@ -296,7 +297,7 @@ meta_cursor_tracker_set_property (GObject *object,
|
|||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_CURSOR_TRACKER:
|
case PROP_CURSOR_TRACKER:
|
||||||
priv->cursor_tracker = g_value_get_object (value);
|
g_set_object (&priv->cursor_tracker, g_value_get_object (value));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
Loading…
Reference in New Issue
Block a user