37 lines
1.9 KiB
Diff
37 lines
1.9 KiB
Diff
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
|
|
index c1ac7cf..a5de412 100644
|
|
--- a/daemon/gdm-session-worker.c
|
|
+++ b/daemon/gdm-session-worker.c
|
|
@@ -149,6 +149,9 @@ typedef int (* GdmSessionWorkerPamNewMessagesFunc) (int,
|
|
const struct pam_message **,
|
|
struct pam_response **,
|
|
gpointer);
|
|
+static void on_saved_session_name_read (GdmSessionWorker *worker);
|
|
+static void on_saved_language_name_read (GdmSessionWorker *worker);
|
|
+static void on_saved_layout_name_read (GdmSessionWorker *worker);
|
|
|
|
G_DEFINE_TYPE (GdmSessionWorker, gdm_session_worker, G_TYPE_OBJECT)
|
|
|
|
@@ -617,6 +620,21 @@ attempt_to_load_user_settings (GdmSessionWorker *worker,
|
|
passwd_entry->pw_dir,
|
|
NULL);
|
|
|
|
+ /* These singal handlers should be disconnected after the loading,
|
|
+ * so that gdm_session_settings_set_* APIs don't cause the emitting
|
|
+ * of Saved*NameRead D-Bus signals any more.
|
|
+ */
|
|
+ g_signal_handlers_disconnect_by_func (worker->priv->user_settings,
|
|
+ G_CALLBACK (on_saved_session_name_read),
|
|
+ worker);
|
|
+
|
|
+ g_signal_handlers_disconnect_by_func (worker->priv->user_settings,
|
|
+ G_CALLBACK (on_saved_language_name_read),
|
|
+ worker);
|
|
+
|
|
+ g_signal_handlers_disconnect_by_func (worker->priv->user_settings,
|
|
+ G_CALLBACK (on_saved_layout_name_read),
|
|
+ worker);
|
|
seteuid (old_uid);
|
|
setegid (old_gid);
|
|
}
|