diff --git a/SOURCES/0001-dnd-Don-t-leak-a-signal-connection.patch b/SOURCES/0001-dnd-Don-t-leak-a-signal-connection.patch new file mode 100644 index 0000000..e976448 --- /dev/null +++ b/SOURCES/0001-dnd-Don-t-leak-a-signal-connection.patch @@ -0,0 +1,28 @@ +From 97c77c6f222d9a7ca24bb32295f8debf65b303a1 Mon Sep 17 00:00:00 2001 +From: Zacharie DUBRULLE +Date: Thu, 18 May 2023 11:40:32 +0000 +Subject: [PATCH] dnd: Don't leak a signal connection + +The handler is currently leaked when a drag monitor stops a +motion event. + +Part-of: +--- + js/ui/dnd.js | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/js/ui/dnd.js b/js/ui/dnd.js +index cefde6f603..5027ed4325 100644 +--- a/js/ui/dnd.js ++++ b/js/ui/dnd.js +@@ -562,6 +562,7 @@ var _Draggable = class _Draggable { + let result = motionFunc(dragEvent); + if (result != DragMotionResult.CONTINUE) { + global.display.set_cursor(DRAG_CURSOR_MAP[result]); ++ dragEvent.targetActor.disconnect(targetActorDestroyHandlerId); + return GLib.SOURCE_REMOVE; + } + } +-- +2.47.0 + diff --git a/SOURCES/0001-loginDialog-Show-session-menu-button-when-in-IN_PROG.patch b/SOURCES/0001-loginDialog-Show-session-menu-button-when-in-IN_PROG.patch new file mode 100644 index 0000000..e148009 --- /dev/null +++ b/SOURCES/0001-loginDialog-Show-session-menu-button-when-in-IN_PROG.patch @@ -0,0 +1,41 @@ +From 44868c705fe499bf6a0aeeef90192e54175b88cb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 13 Feb 2025 14:11:04 +0100 +Subject: [PATCH] loginDialog: Show session menu button when in IN_PROGRESS + status + +Commit c8bb45b added a new IN_PROGRESS status that replaces FAILED +while the user is still allowed to retry authentication. + +We need to account for it when updating the visibility of the +session menu button, otherwise the button disappears after +entering a wrong password. + +Fixes: c8bb45b41c ("gdm: Limit verification cancellations to be conform to allowed-failures") +Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5784 +--- + js/gdm/loginDialog.js | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index 1df5c5eed0..36ecfe444f 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -890,8 +890,12 @@ var LoginDialog = GObject.registerClass({ + } + + _shouldShowSessionMenuButton() { +- if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFYING && +- this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_FAILED) ++ const visibleStatuses = [ ++ AuthPrompt.AuthPromptStatus.VERIFYING, ++ AuthPrompt.AuthPromptStatus.VERIFICATION_FAILED, ++ AuthPrompt.AuthPromptStatus.VERIFICATION_IN_PROGRESS, ++ ]; ++ if (!visibleStatuses.includes(this._authPrompt.verificationStatus)) + return false; + + if (this._user && this._user.is_loaded && this._user.is_logged_in()) +-- +2.48.1 + diff --git a/SOURCES/0001-st-theme-Reuse-stylesheets-if-possible.patch b/SOURCES/0001-st-theme-Reuse-stylesheets-if-possible.patch new file mode 100644 index 0000000..6563ae8 --- /dev/null +++ b/SOURCES/0001-st-theme-Reuse-stylesheets-if-possible.patch @@ -0,0 +1,115 @@ +From 11a28c3df5cd0afb254d5f1f68dcb923b97d09ae Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Wed, 29 Jan 2025 02:46:44 +0100 +Subject: [PATCH] st/theme: Reuse stylesheets if possible + +The following happens when processing an `@import()` rule: + + 1. `_st_theme_resolve_url()` to resolve file + 2. `insert_stylesheet()` to track file/sheet + a. take ownership of file/sheet (ref) + b. use file as key in `stylesheets_by_file` hash table + c. use file as value in `files_by_stylesheet` hash table + 3. release reference to file + +This leads to a refcount error when importing a file that +was already parsed before: + + 1. file start with refcount 1 + 2. `insert_stylesheet()` + a. increases refcount to 2 + b. inserting into `stylesheets_by_file` *decreases* the + passed-in key if the key already exists + c. `files_by_stylesheet` now tracks a file with recount 1 + 3. releases the last reference to file + +The file object tracked in `files_by_stylesheet` is now invalid, +and accessing it results in a crash. + +Avoid this issue by reusing existing stylesheets, so we don't insert +a stylesheet that's already tracked. + +As a side-effect, this also saves us from re-parsing the same file +unnecessarily. + +Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7306 +Part-of: +--- + src/st/st-theme.c | 32 ++++++++++++++++++++++++++------ + 1 file changed, 26 insertions(+), 6 deletions(-) + +diff --git a/src/st/st-theme.c b/src/st/st-theme.c +index 20d42fd334..5db35645bf 100644 +--- a/src/st/st-theme.c ++++ b/src/st/st-theme.c +@@ -250,6 +250,27 @@ insert_stylesheet (StTheme *theme, + g_hash_table_insert (theme->files_by_stylesheet, stylesheet, file); + } + ++static CRStyleSheet * ++resolve_stylesheet (StTheme *theme, ++ GFile *file, ++ GError **error) ++{ ++ CRStyleSheet *sheet; ++ ++ sheet = g_hash_table_lookup (theme->stylesheets_by_file, file); ++ if (sheet) ++ { ++ cr_stylesheet_ref (sheet); ++ return sheet; ++ } ++ ++ sheet = parse_stylesheet (file, error); ++ if (sheet) ++ insert_stylesheet (theme, file, sheet); ++ ++ return sheet; ++} ++ + /** + * st_theme_load_stylesheet: + * @theme: a #StTheme +@@ -267,13 +288,12 @@ st_theme_load_stylesheet (StTheme *theme, + { + CRStyleSheet *stylesheet; + +- stylesheet = parse_stylesheet (file, error); ++ stylesheet = resolve_stylesheet (theme, file, error); + if (!stylesheet) + return FALSE; + + stylesheet->app_data = GUINT_TO_POINTER (TRUE); + +- insert_stylesheet (theme, file, stylesheet); + cr_stylesheet_ref (stylesheet); + theme->custom_stylesheets = g_slist_prepend (theme->custom_stylesheets, stylesheet); + g_signal_emit (theme, signals[STYLESHEETS_CHANGED], 0); +@@ -890,6 +910,7 @@ add_matched_properties (StTheme *a_this, + + if (import_rule->sheet == NULL) + { ++ CRStyleSheet *sheet = NULL; + GFile *file = NULL; + + if (import_rule->url->stryng && import_rule->url->stryng->str) +@@ -897,13 +918,12 @@ add_matched_properties (StTheme *a_this, + file = _st_theme_resolve_url (a_this, + a_nodesheet, + import_rule->url->stryng->str); +- import_rule->sheet = parse_stylesheet (file, NULL); ++ sheet = resolve_stylesheet (a_this, file, NULL); + } + +- if (import_rule->sheet) ++ if (sheet) + { +- insert_stylesheet (a_this, file, import_rule->sheet); +- /* refcount of stylesheets starts off at zero, so we don't need to unref! */ ++ import_rule->sheet = sheet; + } + else + { +-- +2.49.0 + diff --git a/SPECS/gnome-shell.spec b/SPECS/gnome-shell.spec index 417a557..a6b60ad 100644 --- a/SPECS/gnome-shell.spec +++ b/SPECS/gnome-shell.spec @@ -8,7 +8,7 @@ Name: gnome-shell Version: 40.10 -Release: 22%{?dist} +Release: 25%{?dist} Summary: Window management and application launching for GNOME License: GPLv2+ @@ -34,6 +34,7 @@ Patch15: gdm-networking.patch Patch16: login-screen-extensions.patch Patch17: fix-resetting-auth-prompt.patch Patch18: 0001-authPrompt-Disregard-smartcard-status-changes-events.patch +Patch19: 0001-loginDialog-Show-session-menu-button-when-in-IN_PROG.patch # Misc. Patch30: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch @@ -70,6 +71,8 @@ Patch60: 0001-windowPreview-Override-with-window-icon-if-available.patch Patch61: screencast-bus-name.patch Patch62: fix-inhibit-shortcut-permission.patch Patch63: 0001-shell-window-tracker-Help-mutter-finding-app-info-s-.patch +Patch64: 0001-dnd-Don-t-leak-a-signal-connection.patch +Patch65: 0001-st-theme-Reuse-stylesheets-if-possible.patch %define eds_version 3.33.1 %define gnome_desktop_version 3.35.91 @@ -299,6 +302,18 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %endif %changelog +* Mon May 05 2025 Florian Müllner - 40.10-25 +- Fix refount issue in stylesheet tracking + Resolves: RHEL-69401 + +* Thu Feb 13 2025 Florian Müllner - 40.10-24 +- Fix session button visibility after auth failure + Resolves: RHEL-4116 + +* Tue Nov 19 2024 Florian Müllner - 40.10-23 +- Fix leaked signal connection + Related: RHEL-22692 + * Fri Oct 18 2024 Jonas Ådahl - 40.10-22 - Help mutter finding app info for windows Resolves: RHEL-63000