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->udev);
g_clear_object (&priv->device_pool);
g_clear_pointer (&priv->launcher, meta_launcher_free);
g_clear_object (&priv->launcher);
}
static ClutterBackend *

View File

@ -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,

View File

@ -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);