File gdm-selecting-desktop-environment.patch of Package gdm.import4636

Index: gdm-2.28.0/daemon/gdm-session-worker.c
===================================================================
--- gdm-2.28.0.orig/daemon/gdm-session-worker.c
+++ gdm-2.28.0/daemon/gdm-session-worker.c
@@ -157,6 +157,9 @@ typedef int (* GdmSessionWorkerPamNewMes
                                                     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)
 
@@ -597,6 +600,22 @@ attempt_to_load_user_settings (GdmSessio
         gdm_session_settings_load (worker->priv->user_settings,
                                    username,
                                    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);
 }
 
 static void
openSUSE Build Service is sponsored by