Update fix of registering session

Registering display is needed too

Resolves: https://redhat.atlassian.net/browse/RHEL-178690
This commit is contained in:
Joan Torres Lopez 2026-05-25 18:26:01 +02:00
parent b0f07ddb5c
commit 1cdc75eb5a
No known key found for this signature in database
2 changed files with 76 additions and 4 deletions

View File

@ -0,0 +1,66 @@
From 714332d3065a41e8bae61234cd231219cfcc95d6 Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 3 Feb 2026 14:43:43 +0100
Subject: [PATCH] main: Call RegisterDisplay once UI has initialized
RegisterDisplay is called to signal that graphics have settled,
which allows GDM to terminate pending greeters and plymouth.
Previously, RegisterSession was used for both recording the login
and terminating greeters. This caused a race condition where the
new user shell was setting up while the greeter was tearing down,
leading to configuration conflicts during the asynchronous handoff.
By splitting into RegisterSession (called early to record login) and
RegisterDisplay (called after graphics settle), the greeter teardown
is delayed until the new session has completed its initial modeset.
Fixes: 32a01330 ("main: Register session with GDM on startup")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4057>
---
js/misc/loginManager.js | 18 ++++++++++++++++++
js/ui/main.js | 2 ++
2 files changed, 20 insertions(+)
diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js
index 4eee98b..63caea3 100644
--- a/js/misc/loginManager.js
+++ b/js/misc/loginManager.js
@@ -68,6 +68,24 @@ async function registerSessionWithGDM() {
}
}
+async function registerDisplayWithGDM() {
+ log('Registering display with GDM');
+ try {
+ await Gio.DBus.system.call(
+ 'org.gnome.DisplayManager',
+ '/org/gnome/DisplayManager/Manager',
+ 'org.gnome.DisplayManager.Manager',
+ 'RegisterDisplay',
+ GLib.Variant.new('(a{ss})', [{}]), null,
+ Gio.DBusCallFlags.NONE, -1, null);
+ } catch (e) {
+ if (!e.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD))
+ log(`Error registering display with GDM: ${e.message}`);
+ else
+ log('Not calling RegisterDisplay(): method not exported, GDM too old?');
+ }
+}
+
let _loginManager = null;
/**
diff --git a/js/ui/main.js b/js/ui/main.js
index c753ab6..2bcc819 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -309,6 +309,8 @@ function _initializeUI() {
sessionMode.currentMode !== 'initial-setup')
_handleLockScreenWarning();
+ LoginManager.registerDisplayWithGDM();
+
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
if (perfModuleName) {
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");

View File

@ -8,7 +8,7 @@
Name: gnome-shell
Version: 40.10
Release: 35%{?dist}
Release: 36%{?dist}
Summary: Window management and application launching for GNOME
License: GPLv2+
@ -39,10 +39,11 @@ Patch20: 0001-systemActions-Optionally-allow-restart-shutdown-on-l.patch
Patch21: 0001-authPrompt-Connect-disable-show-password-key-with-pa.patch
Patch22: 0001-gdm-util-Early-initialize-all-internal-properties.patch
Patch23: 0001-main-Register-session-with-GDM-on-startup.patch
Patch24: 0001-loginManager-Update-RegisterSession.patch
# Passwordless GDM patch series
Patch24: pre-changes-for-passwordless-gdm-backport.patch
Patch25: 0001-Support-for-web-login-and-unified-auth-mechanism.patch
Patch26: post-changes-for-passwordless-gdm-backport.patch
Patch25: pre-changes-for-passwordless-gdm-backport.patch
Patch26: 0001-Support-for-web-login-and-unified-auth-mechanism.patch
Patch27: post-changes-for-passwordless-gdm-backport.patch
# Misc.
Patch30: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch
@ -314,6 +315,11 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
%endif
%changelog
* Mon May 25 2026 Joan Torres Lopez <joantolo@redhat.com> - 40.10-36
- Update fix of registering session
Registering the display is needed too
Resolves: RHEL-178690
* Thu Apr 2 2026 Joan Torres Lopez <joantolo@redhat.com> - 40.10-35
- Backport passwordless GDM feature to RHEL 9
Resolves: RHEL-169914