launcher: Turn MetaLauncher into a GObject

This will be useful later when refactoring MetaLauncher.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4130>
This commit is contained in:
Sebastian Wick 2024-11-12 15:42:36 +01:00
parent 9eb29974f1
commit 6c5f552088
3 changed files with 39 additions and 15 deletions

View File

@ -115,7 +115,7 @@ meta_backend_native_dispose (GObject *object)
g_clear_object (&priv->kms); g_clear_object (&priv->kms);
g_clear_object (&priv->udev); g_clear_object (&priv->udev);
g_clear_object (&priv->device_pool); g_clear_object (&priv->device_pool);
g_clear_pointer (&priv->launcher, meta_launcher_free); g_clear_object (&priv->launcher);
} }
static ClutterBackend * static ClutterBackend *

View File

@ -39,8 +39,9 @@
struct _MetaLauncher struct _MetaLauncher
{ {
MetaBackend *backend; GObject parent;
MetaBackend *backend;
MetaDBusLogin1Session *session_proxy; MetaDBusLogin1Session *session_proxy;
MetaDBusLogin1Seat *seat_proxy; MetaDBusLogin1Seat *seat_proxy;
char *seat_id; char *seat_id;
@ -48,12 +49,41 @@ struct _MetaLauncher
gboolean session_active; gboolean session_active;
}; };
G_DEFINE_FINAL_TYPE (MetaLauncher,
meta_launcher,
G_TYPE_OBJECT)
const char * const char *
meta_launcher_get_seat_id (MetaLauncher *launcher) meta_launcher_get_seat_id (MetaLauncher *launcher)
{ {
return launcher->seat_id; 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 static gboolean
find_systemd_session (char **session_id, find_systemd_session (char **session_id,
GError **error) GError **error)
@ -413,7 +443,7 @@ meta_launcher_new (MetaBackend *backend,
goto fail; goto fail;
} }
self = g_new0 (MetaLauncher, 1); self = g_object_new (META_TYPE_LAUNCHER, NULL);
self->backend = backend; self->backend = backend;
self->session_proxy = g_object_ref (session_proxy); self->session_proxy = g_object_ref (session_proxy);
self->session_active = TRUE; self->session_active = TRUE;
@ -436,15 +466,6 @@ fail:
return NULL; 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 gboolean
meta_launcher_activate_vt (MetaLauncher *launcher, meta_launcher_activate_vt (MetaLauncher *launcher,
signed char vt, signed char vt,

View File

@ -21,7 +21,12 @@
#include "backends/meta-backend-types.h" #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; typedef struct _MetaDBusLogin1Session MetaDBusLogin1Session;
MetaLauncher *meta_launcher_new (MetaBackend *backend, MetaLauncher *meta_launcher_new (MetaBackend *backend,
@ -29,8 +34,6 @@ MetaLauncher *meta_launcher_new (MetaBackend *backend,
const char *custom_seat_id, const char *custom_seat_id,
GError **error); GError **error);
void meta_launcher_free (MetaLauncher *self);
gboolean meta_launcher_activate_vt (MetaLauncher *self, gboolean meta_launcher_activate_vt (MetaLauncher *self,
signed char vt, signed char vt,
GError **error); GError **error);