summaryrefslogtreecommitdiff
path: root/daemon/gdm-session-worker.c
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2018-08-14 14:52:41 -0400
committerRay Strode <rstrode@redhat.com>2021-07-22 13:42:57 -0400
commit495b4fc0d7c65f76b03108199085df4fca98618c (patch)
tree7adbeabeb82049e008451fc014c955b32fdc1d76 /daemon/gdm-session-worker.c
parent2a871da666afd3a5312e061b7933e7b62eb5ee39 (diff)
downloadgdm-495b4fc0d7c65f76b03108199085df4fca98618c.tar.gz
session: support new accountsservice Session and SessionType props
At the moment the user's session is stored in a property called "XSession". This is pretty weird if the user is using wayland. AccountService now supports a more generic property "Session" and a related "SessionType" property to replace "XSession". This commit switches GDM over to use the new properties.
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
*/