summaryrefslogtreecommitdiff
path: root/clutter/clutter/clutter-backend.c
diff options
context:
space:
mode:
authorJonas Ã…dahl <jadahl@gmail.com>2021-03-12 08:38:46 +0100
committerMarge Bot <marge-bot@gnome.org>2021-03-13 18:56:21 +0000
commitc1810d6947aa8d518d8ce94eb7e43f1e777e99fa (patch)
tree6124a273826eb4a890162ce95984ac9911c92281 /clutter/clutter/clutter-backend.c
parentab600cafd270897340147e1ab22596fd4133da08 (diff)
downloadmutter-c1810d6947aa8d518d8ce94eb7e43f1e777e99fa.tar.gz
backend: Destroy clutter backend explicitly
Instead of relying on reference counting, destroy it with a destroy function that calls run_dispose() on before removing a reference. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775>
Diffstat (limited to 'clutter/clutter/clutter-backend.c')
-rw-r--r--clutter/clutter/clutter-backend.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/clutter/clutter/clutter-backend.c b/clutter/clutter/clutter-backend.c
index f49d93cac..c90fabb42 100644
--- a/clutter/clutter/clutter-backend.c
+++ b/clutter/clutter/clutter-backend.c
@@ -99,21 +99,12 @@ clutter_backend_dispose (GObject *gobject)
backend->stage_window = NULL;
}
- G_OBJECT_CLASS (clutter_backend_parent_class)->dispose (gobject);
-}
-
-static void
-clutter_backend_finalize (GObject *gobject)
-{
- ClutterBackend *backend = CLUTTER_BACKEND (gobject);
-
- g_source_destroy (backend->cogl_source);
-
- g_free (backend->font_name);
+ g_clear_pointer (&backend->cogl_source, g_source_destroy);
+ g_clear_pointer (&backend->font_name, g_free);
g_clear_pointer (&backend->font_options, cairo_font_options_destroy);
g_clear_object (&backend->input_method);
- G_OBJECT_CLASS (clutter_backend_parent_class)->finalize (gobject);
+ G_OBJECT_CLASS (clutter_backend_parent_class)->dispose (gobject);
}
static gfloat
@@ -451,7 +442,6 @@ clutter_backend_class_init (ClutterBackendClass *klass)
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class->dispose = clutter_backend_dispose;
- gobject_class->finalize = clutter_backend_finalize;
/**
* ClutterBackend::resolution-changed:
@@ -933,3 +923,10 @@ clutter_backend_is_display_server (ClutterBackend *backend)
{
return CLUTTER_BACKEND_GET_CLASS (backend)->is_display_server (backend);
}
+
+void
+clutter_backend_destroy (ClutterBackend *backend)
+{
+ g_object_run_dispose (G_OBJECT (backend));
+ g_object_unref (backend);
+}