Another session selection fix

The last commit pruned something that should have been integrated
into a different patch. This commit fixes that.

Also, clean up the intermediate changelog entries, because they
look kind of redundant.

Related: #1985099
This commit is contained in:
Ray Strode 2021-07-28 11:53:35 -04:00
parent bac40f22aa
commit d27947010f
2 changed files with 53 additions and 31 deletions

View File

@ -1,4 +1,4 @@
From 42958e082c611d2e2f466247e7d8759dfb5f607d Mon Sep 17 00:00:00 2001 From a8f8a5ee422d6ae3d87c1fba351313a5d98ded6e Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com> From: Ray Strode <rstrode@redhat.com>
Date: Fri, 16 Jul 2021 12:34:57 -0400 Date: Fri, 16 Jul 2021 12:34:57 -0400
Subject: [PATCH] local-display-factory: Provide more flexibility for Subject: [PATCH] local-display-factory: Provide more flexibility for
@ -25,14 +25,14 @@ fall back to "wayland".
daemon/gdm-display.c | 36 +++++ daemon/gdm-display.c | 36 +++++
daemon/gdm-launch-environment.c | 9 ++ daemon/gdm-launch-environment.c | 9 ++
daemon/gdm-local-display-factory.c | 224 ++++++++++++++++++++++++----- daemon/gdm-local-display-factory.c | 224 ++++++++++++++++++++++++-----
daemon/gdm-manager.c | 11 +- daemon/gdm-manager.c | 22 ++-
daemon/gdm-session.c | 115 ++++++++------- daemon/gdm-session.c | 115 ++++++++-------
data/gdm.schemas.in | 10 ++ data/gdm.schemas.in | 10 ++
libgdm/gdm-sessions.c | 72 +++++++--- libgdm/gdm-sessions.c | 72 +++++++---
8 files changed, 361 insertions(+), 118 deletions(-) 8 files changed, 366 insertions(+), 124 deletions(-)
diff --git a/common/gdm-settings-keys.h b/common/gdm-settings-keys.h diff --git a/common/gdm-settings-keys.h b/common/gdm-settings-keys.h
index f0059b5c..87685d3c 100644 index f0059b5cf..87685d3cd 100644
--- a/common/gdm-settings-keys.h --- a/common/gdm-settings-keys.h
+++ b/common/gdm-settings-keys.h +++ b/common/gdm-settings-keys.h
@@ -6,59 +6,61 @@ @@ -6,59 +6,61 @@
@ -98,7 +98,7 @@ index f0059b5c..87685d3c 100644
#endif /* _GDM_SETTINGS_KEYS_H */ #endif /* _GDM_SETTINGS_KEYS_H */
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c
index 3a260923..34467856 100644 index 3a260923a..46d5a7732 100644
--- a/daemon/gdm-display.c --- a/daemon/gdm-display.c
+++ b/daemon/gdm-display.c +++ b/daemon/gdm-display.c
@@ -66,83 +66,86 @@ typedef struct _GdmDisplayPrivate @@ -66,83 +66,86 @@ typedef struct _GdmDisplayPrivate
@ -583,7 +583,7 @@ index 3a260923..34467856 100644
self); self);
g_signal_handlers_disconnect_by_func (priv->launch_environment, g_signal_handlers_disconnect_by_func (priv->launch_environment,
diff --git a/daemon/gdm-launch-environment.c b/daemon/gdm-launch-environment.c diff --git a/daemon/gdm-launch-environment.c b/daemon/gdm-launch-environment.c
index 87a1c5ff..14ecfac2 100644 index 87a1c5ffe..14ecfac2d 100644
--- a/daemon/gdm-launch-environment.c --- a/daemon/gdm-launch-environment.c
+++ b/daemon/gdm-launch-environment.c +++ b/daemon/gdm-launch-environment.c
@@ -134,60 +134,61 @@ static GHashTable * @@ -134,60 +134,61 @@ static GHashTable *
@ -718,7 +718,7 @@ index 87a1c5ff..14ecfac2 100644
g_signal_emit (G_OBJECT (launch_environment), signals [OPENED], 0); g_signal_emit (G_OBJECT (launch_environment), signals [OPENED], 0);
diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c
index 8a4ef06c..141d64c6 100644 index 8a4ef06cd..141d64c6b 100644
--- a/daemon/gdm-local-display-factory.c --- a/daemon/gdm-local-display-factory.c
+++ b/daemon/gdm-local-display-factory.c +++ b/daemon/gdm-local-display-factory.c
@@ -156,126 +156,225 @@ take_next_display_number (GdmLocalDisplayFactory *factory) @@ -156,126 +156,225 @@ take_next_display_number (GdmLocalDisplayFactory *factory)
@ -1226,7 +1226,7 @@ index 8a4ef06c..141d64c6 100644
static gboolean static gboolean
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
index 9c10adff..7c291013 100644 index 9c10adff3..4c2752fee 100644
--- a/daemon/gdm-manager.c --- a/daemon/gdm-manager.c
+++ b/daemon/gdm-manager.c +++ b/daemon/gdm-manager.c
@@ -1306,74 +1306,75 @@ get_automatic_login_details (GdmManager *manager, @@ -1306,74 +1306,75 @@ get_automatic_login_details (GdmManager *manager,
@ -1307,7 +1307,9 @@ index 9c10adff..7c291013 100644
set_up_greeter_session (GdmManager *manager, set_up_greeter_session (GdmManager *manager,
GdmDisplay *display) GdmDisplay *display)
{ {
@@ -2280,61 +2281,60 @@ on_session_reauthentication_started (GdmSession *session, @@ -2278,87 +2279,85 @@ on_session_reauthentication_started (GdmSession *session,
if (invocation != NULL) {
g_hash_table_steal (manager->priv->open_reauthentication_requests, g_hash_table_steal (manager->priv->open_reauthentication_requests,
source_tag); source_tag);
gdm_dbus_manager_complete_open_reauthentication_channel (GDM_DBUS_MANAGER (manager), gdm_dbus_manager_complete_open_reauthentication_channel (GDM_DBUS_MANAGER (manager),
@ -1336,10 +1338,11 @@ index 9c10adff..7c291013 100644
char *display_auth_file = NULL; char *display_auth_file = NULL;
char *display_seat_id = NULL; char *display_seat_id = NULL;
char *display_id = NULL; char *display_id = NULL;
#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER) -#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER)
g_autofree char *display_session_type = NULL; - g_autofree char *display_session_type = NULL;
- gboolean greeter_is_wayland; - gboolean greeter_is_wayland;
#endif -#endif
+ g_auto (GStrv) supported_session_types = NULL;
g_object_get (G_OBJECT (display), g_object_get (G_OBJECT (display),
"id", &display_id, "id", &display_id,
@ -1348,9 +1351,10 @@ index 9c10adff..7c291013 100644
"remote-hostname", &remote_hostname, "remote-hostname", &remote_hostname,
"x11-authority-file", &display_auth_file, "x11-authority-file", &display_auth_file,
"seat-id", &display_seat_id, "seat-id", &display_seat_id,
#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER) -#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER)
"session-type", &display_session_type, - "session-type", &display_session_type,
#endif -#endif
+ "supported-session-types", &supported_session_types,
NULL); NULL);
display_device = get_display_device (manager, display); display_device = get_display_device (manager, display);
@ -1363,13 +1367,40 @@ index 9c10adff..7c291013 100644
display_auth_file, display_auth_file,
display_is_local, display_is_local,
NULL); NULL);
+ g_object_set (G_OBJECT (session),
+ "supported-session-types", supported_session_types,
+ NULL);
g_debug ("GdmSession: Created user session for user %d on display %s (seat %s)", g_debug ("GdmSession: Created user session for user %d on display %s (seat %s)",
(int) allowed_user, (int) allowed_user,
display_id, display_id,
display_seat_id); display_seat_id);
@@ -2378,65 +2378,60 @@ create_user_session_for_display (GdmManager *manager, g_free (display_name);
g_free (remote_hostname);
g_free (display_auth_file);
g_free (display_seat_id);
g_signal_connect (session,
"reauthentication-started",
G_CALLBACK (on_session_reauthentication_started),
manager);
g_signal_connect (session,
"reauthenticated",
G_CALLBACK (on_session_reauthenticated),
manager);
g_signal_connect (session,
"client-ready-for-session-to-start",
G_CALLBACK (on_session_client_ready_for_session_to_start),
manager);
g_signal_connect (session,
"client-connected",
G_CALLBACK (on_session_client_connected),
manager);
g_signal_connect (session,
"client-disconnected",
G_CALLBACK (on_session_client_disconnected),
@@ -2378,65 +2377,60 @@ create_user_session_for_display (GdmManager *manager,
g_signal_connect (session, g_signal_connect (session,
"authentication-failed", "authentication-failed",
G_CALLBACK (on_session_authentication_failed), G_CALLBACK (on_session_authentication_failed),
@ -1436,7 +1467,7 @@ index 9c10adff..7c291013 100644
} }
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index a010cecf..2b941e5e 100644 index a010cecf5..2b941e5e1 100644
--- a/daemon/gdm-session.c --- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c +++ b/daemon/gdm-session.c
@@ -106,84 +106,81 @@ struct _GdmSession @@ -106,84 +106,81 @@ struct _GdmSession
@ -2109,7 +2140,7 @@ index a010cecf..2b941e5e 100644
NULL); NULL);
diff --git a/data/gdm.schemas.in b/data/gdm.schemas.in diff --git a/data/gdm.schemas.in b/data/gdm.schemas.in
index 255bff02..a1035f95 100644 index 255bff023..a1035f95e 100644
--- a/data/gdm.schemas.in --- a/data/gdm.schemas.in
+++ b/data/gdm.schemas.in +++ b/data/gdm.schemas.in
@@ -25,65 +25,75 @@ @@ -25,65 +25,75 @@
@ -2189,7 +2220,7 @@ index 255bff02..a1035f95 100644
<key>xdmcp/MaxPending</key> <key>xdmcp/MaxPending</key>
<signature>i</signature> <signature>i</signature>
diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c
index a1322505..f078e04b 100644 index a13225050..f078e04b8 100644
--- a/libgdm/gdm-sessions.c --- a/libgdm/gdm-sessions.c
+++ b/libgdm/gdm-sessions.c +++ b/libgdm/gdm-sessions.c
@@ -163,171 +163,203 @@ load_session_file (const char *id, @@ -163,171 +163,203 @@ load_session_file (const char *id,
@ -2417,5 +2448,5 @@ index a1322505..f078e04b 100644
* Returns: (transfer full): a %NULL terminated list of session ids * Returns: (transfer full): a %NULL terminated list of session ids
*/ */
-- --
2.32.0 2.31.1

View File

@ -11,7 +11,7 @@
Name: gdm Name: gdm
Epoch: 1 Epoch: 1
Version: 40.1 Version: 40.1
Release: 3%{?dist} Release: 4%{?dist}
Summary: The GNOME Display Manager Summary: The GNOME Display Manager
License: GPLv2+ License: GPLv2+
@ -311,16 +311,7 @@ dconf update || :
%{_libdir}/pkgconfig/gdm-pam-extensions.pc %{_libdir}/pkgconfig/gdm-pam-extensions.pc
%changelog %changelog
* Wed Jul 28 2021 Ray Strode <rstrode@redhat.com> - 40.1-3 * Wed Jul 28 2021 Ray Strode <rstrode@redhat.com> - 40.1-4
- Clean up the initial-setup disabling patch that somehow
got bits from another patch in it.
Related: #1985099
* Wed Jul 28 2021 Ray Strode <rstrode@redhat.com> - 40.1-2
- A few clean ups and fixes in session selection patch
Related: #1985099
* Fri Jul 23 2021 Ray Strode <rstrode@redhat.com> - 40.1-1
- Update to 40.1 - Update to 40.1
- Allow vendor nvidia users to choose wayland sessions - Allow vendor nvidia users to choose wayland sessions
Related: #1985099 Related: #1985099