summaryrefslogtreecommitdiff
path: root/0002-daemon-Don-t-update-session-type-if-no-saved-session.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-02 07:02:42 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-02 07:02:42 +0000
commit0146b4281119abb87bf869b338f333f09dbc8f84 (patch)
tree9f785b401970a7c8be7f8a51cb3bbf1f448062a0 /0002-daemon-Don-t-update-session-type-if-no-saved-session.patch
parentad790728cab5990635f0bf2f7b9bb71bab07b866 (diff)
automatic import of gdmopeneuler24.03_LTSopeneuler23.09
Diffstat (limited to '0002-daemon-Don-t-update-session-type-if-no-saved-session.patch')
-rw-r--r--0002-daemon-Don-t-update-session-type-if-no-saved-session.patch109
1 files changed, 109 insertions, 0 deletions
diff --git a/0002-daemon-Don-t-update-session-type-if-no-saved-session.patch b/0002-daemon-Don-t-update-session-type-if-no-saved-session.patch
new file mode 100644
index 0000000..c6b5abc
--- /dev/null
+++ b/0002-daemon-Don-t-update-session-type-if-no-saved-session.patch
@@ -0,0 +1,109 @@
+From b09ab8a73d5a4133f72846d529bbbfb7802ca535 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Mon, 6 Sep 2021 08:40:46 -0400
+Subject: [PATCH 2/5] daemon: Don't update session type if no saved session
+
+At the moment we always set the session type when the session name
+is read. But users don't always have a session type specified.
+
+If they don't, then don't set the session type.
+
+https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/153
+---
+ daemon/gdm-session.c | 23 +++++++++++++----------
+ 1 file changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
+index 2b941e5e..b54687d5 100644
+--- a/daemon/gdm-session.c
++++ b/daemon/gdm-session.c
+@@ -995,73 +995,76 @@ worker_on_reauthenticated (GdmDBusWorker *worker,
+ static void
+ worker_on_saved_language_name_read (GdmDBusWorker *worker,
+ const char *language_name,
+ GdmSessionConversation *conversation)
+ {
+ GdmSession *self = conversation->session;
+
+ if (strlen (language_name) > 0) {
+ g_free (self->saved_language);
+ self->saved_language = g_strdup (language_name);
+
+ if (self->greeter_interface != NULL) {
+ gdm_dbus_greeter_emit_default_language_name_changed (self->greeter_interface,
+ language_name);
+ }
+ }
+ }
+
+ static void
+ worker_on_saved_session_name_read (GdmDBusWorker *worker,
+ const char *session_name,
+ GdmSessionConversation *conversation)
+ {
+ GdmSession *self = conversation->session;
+
+ if (! get_session_command_for_name (self, session_name, self->saved_session_type, NULL)) {
+ /* ignore sessions that don't exist */
+ g_debug ("GdmSession: not using invalid .dmrc session: %s", session_name);
+ g_free (self->saved_session);
+ self->saved_session = NULL;
+- } else if (strcmp (session_name,
+- get_default_session_name (self)) != 0) {
+- g_free (self->saved_session);
+- self->saved_session = g_strdup (session_name);
+-
+- if (self->greeter_interface != NULL) {
+- gdm_dbus_greeter_emit_default_session_name_changed (self->greeter_interface,
+- session_name);
++ update_session_type (self);
++ } else {
++ if (strcmp (session_name,
++ get_default_session_name (self)) != 0) {
++ g_free (self->saved_session);
++ self->saved_session = g_strdup (session_name);
++
++ if (self->greeter_interface != NULL) {
++ gdm_dbus_greeter_emit_default_session_name_changed (self->greeter_interface,
++ session_name);
++ }
+ }
++ if (self->saved_session_type != NULL)
++ set_session_type (self, self->saved_session_type);
+ }
+
+- update_session_type (self);
+-
+ }
+
+ static void
+ worker_on_saved_session_type_read (GdmDBusWorker *worker,
+ const char *session_type,
+ GdmSessionConversation *conversation)
+ {
+ GdmSession *self = conversation->session;
+
+ g_free (self->saved_session_type);
+ self->saved_session_type = g_strdup (session_type);
+ }
+
+ static GdmSessionConversation *
+ find_conversation_by_pid (GdmSession *self,
+ GPid pid)
+ {
+ GHashTableIter iter;
+ gpointer key, value;
+
+ g_hash_table_iter_init (&iter, self->conversations);
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ GdmSessionConversation *conversation;
+
+ conversation = (GdmSessionConversation *) value;
+
+ if (conversation->worker_pid == pid) {
+ return conversation;
+ }
+ }
+--
+2.34.1
+