summaryrefslogtreecommitdiff
path: root/daemon/gdm-session-worker.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/gdm-session-worker.c')
-rw-r--r--daemon/gdm-session-worker.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index 6e307ac6..7d7d2496 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -2584,6 +2584,20 @@ on_saved_session_name_read (GdmSessionWorker *worker)
}
static void
+on_saved_session_type_read (GdmSessionWorker *worker)
+{
+ char *session_type;
+
+ session_type = gdm_session_settings_get_session_type (worker->priv->user_settings);
+
+ g_debug ("GdmSessionWorker: Saved session type is %s", session_type);
+ gdm_dbus_worker_emit_saved_session_type_read (GDM_DBUS_WORKER (worker),
+ session_type);
+ g_free (session_type);
+}
+
+
+static void
do_setup (GdmSessionWorker *worker)
{
GError *error;
@@ -3046,6 +3060,11 @@ gdm_session_worker_handle_initialize (GdmDBusWorker *object,
G_CALLBACK (on_saved_session_name_read),
worker);
+ g_signal_connect_swapped (worker->priv->user_settings,
+ "notify::session-type",
+ G_CALLBACK (on_saved_session_type_read),
+ worker);
+
if (worker->priv->username) {
wait_for_settings = !gdm_session_settings_load (worker->priv->user_settings,
worker->priv->username);
@@ -3102,6 +3121,11 @@ gdm_session_worker_handle_setup (GdmDBusWorker *object,
"notify::session-name",
G_CALLBACK (on_saved_session_name_read),
worker);
+ g_signal_connect_swapped (worker->priv->user_settings,
+ "notify::session-type",
+ G_CALLBACK (on_saved_session_type_read),
+ worker);
+
return TRUE;
}
@@ -3144,6 +3168,10 @@ gdm_session_worker_handle_setup_for_user (GdmDBusWorker *object,
"notify::session-name",
G_CALLBACK (on_saved_session_name_read),
worker);
+ g_signal_connect_swapped (worker->priv->user_settings,
+ "notify::session-type",
+ G_CALLBACK (on_saved_session_type_read),
+ worker);
/* Load settings from accounts daemon before continuing
*/