core: Add MetaSessionManager::session-instantiated signal

Mostly useful for tests to catch a session being created.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4311>
This commit is contained in:
Carlos Garnacho 2025-02-28 15:41:05 +01:00
parent 99606f840c
commit 9a1dc0216e

View File

@ -63,6 +63,14 @@ enum
static GParamSpec *props[N_PROPS] = { 0, };
enum
{
SESSION_INSTANTIATED,
N_SIGNALS,
};
static guint signals[N_SIGNALS] = { 0, };
#define MAX_SIZE (10 * 1024 * 1024)
static void meta_session_manager_initable_iface_init (GInitableIface *iface);
@ -141,6 +149,15 @@ meta_session_manager_class_init (MetaSessionManagerClass *klass)
object_class->get_property = meta_session_manager_get_property;
object_class->finalize = meta_session_manager_finalize;
signals[SESSION_INSTANTIATED] =
g_signal_new ("session-instantiated",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
0, NULL, NULL, NULL,
G_TYPE_NONE, 2,
G_TYPE_STRING,
META_TYPE_SESSION_STATE);
props[PROP_NAME] =
g_param_spec_string ("name", NULL, NULL,
NULL,
@ -318,6 +335,10 @@ meta_session_manager_get_session (MetaSessionManager *manager,
(gpointer) meta_session_state_get_name (session_state),
g_object_ref (session_state));
g_signal_emit (manager, signals[SESSION_INSTANTIATED], 0,
meta_session_state_get_name (session_state),
session_state);
return g_steal_pointer (&session_state);
}