From 6c5f552088c37ff345f0d9c986b65449088906ab Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Tue, 12 Nov 2024 15:42:36 +0100 Subject: [PATCH] launcher: Turn MetaLauncher into a GObject This will be useful later when refactoring MetaLauncher. Part-of: --- src/backends/native/meta-backend-native.c | 2 +- src/backends/native/meta-launcher.c | 43 +++++++++++++++++------ src/backends/native/meta-launcher.h | 9 +++-- 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index 2eb2d180c..a8c34dbf3 100644 --- a/src/backends/native/meta-backend-native.c +++ b/src/backends/native/meta-backend-native.c @@ -115,7 +115,7 @@ meta_backend_native_dispose (GObject *object) g_clear_object (&priv->kms); g_clear_object (&priv->udev); g_clear_object (&priv->device_pool); - g_clear_pointer (&priv->launcher, meta_launcher_free); + g_clear_object (&priv->launcher); } static ClutterBackend * diff --git a/src/backends/native/meta-launcher.c b/src/backends/native/meta-launcher.c index af93b6ba3..1a83446a4 100644 --- a/src/backends/native/meta-launcher.c +++ b/src/backends/native/meta-launcher.c @@ -39,8 +39,9 @@ struct _MetaLauncher { - MetaBackend *backend; + GObject parent; + MetaBackend *backend; MetaDBusLogin1Session *session_proxy; MetaDBusLogin1Seat *seat_proxy; char *seat_id; @@ -48,12 +49,41 @@ struct _MetaLauncher gboolean session_active; }; +G_DEFINE_FINAL_TYPE (MetaLauncher, + meta_launcher, + G_TYPE_OBJECT) + const char * meta_launcher_get_seat_id (MetaLauncher *launcher) { return launcher->seat_id; } +static void +meta_launcher_dispose (GObject *object) +{ + MetaLauncher *launcher = META_LAUNCHER (object); + + g_clear_pointer (&launcher->seat_id, g_free); + g_clear_object (&launcher->seat_proxy); + g_clear_object (&launcher->session_proxy); + + G_OBJECT_CLASS (meta_launcher_parent_class)->dispose (object); +} + +static void +meta_launcher_class_init (MetaLauncherClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->dispose = meta_launcher_dispose; +} + +static void +meta_launcher_init (MetaLauncher *launcher) +{ +} + static gboolean find_systemd_session (char **session_id, GError **error) @@ -413,7 +443,7 @@ meta_launcher_new (MetaBackend *backend, goto fail; } - self = g_new0 (MetaLauncher, 1); + self = g_object_new (META_TYPE_LAUNCHER, NULL); self->backend = backend; self->session_proxy = g_object_ref (session_proxy); self->session_active = TRUE; @@ -436,15 +466,6 @@ fail: return NULL; } -void -meta_launcher_free (MetaLauncher *self) -{ - g_free (self->seat_id); - g_clear_object (&self->seat_proxy); - g_clear_object (&self->session_proxy); - g_free (self); -} - gboolean meta_launcher_activate_vt (MetaLauncher *launcher, signed char vt, diff --git a/src/backends/native/meta-launcher.h b/src/backends/native/meta-launcher.h index f2737aec8..5939b00ef 100644 --- a/src/backends/native/meta-launcher.h +++ b/src/backends/native/meta-launcher.h @@ -21,7 +21,12 @@ #include "backends/meta-backend-types.h" -typedef struct _MetaLauncher MetaLauncher; +#define META_TYPE_LAUNCHER (meta_launcher_get_type ()) +G_DECLARE_FINAL_TYPE (MetaLauncher, + meta_launcher, + META, LAUNCHER, + GObject) + typedef struct _MetaDBusLogin1Session MetaDBusLogin1Session; MetaLauncher *meta_launcher_new (MetaBackend *backend, @@ -29,8 +34,6 @@ MetaLauncher *meta_launcher_new (MetaBackend *backend, const char *custom_seat_id, GError **error); -void meta_launcher_free (MetaLauncher *self); - gboolean meta_launcher_activate_vt (MetaLauncher *self, signed char vt, GError **error);