diff --git a/src/core/meta-session-manager.c b/src/core/meta-session-manager.c index 3270fd788..a122b7667 100644 --- a/src/core/meta-session-manager.c +++ b/src/core/meta-session-manager.c @@ -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); }