diff --git a/0001-endSessionDialog-Don-t-emit-closed-until-handler-is-.patch b/0001-endSessionDialog-Don-t-emit-closed-until-handler-is-.patch new file mode 100644 index 0000000..ff2f11c --- /dev/null +++ b/0001-endSessionDialog-Don-t-emit-closed-until-handler-is-.patch @@ -0,0 +1,92 @@ +From 5b1260864b3a1a28d778a8610b4eb13c0bd52c99 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Sun, 5 Mar 2023 20:00:42 -0500 +Subject: [PATCH] endSessionDialog: Don't emit 'closed' until handler is + connected + +Prior to commit 7bd98f3f5fb7e0d1220646b8a4ee7073534a8e8f animation +onComplete handlers always occured at least after one main loop +iteration. + +Now, if animations are disabled, they can get invoked immediately. + +That breaks the endSessionDialog button handler, which calls +close before setting up the "closed" signal handler. + +This commit fixes the handler to get set up first. +--- + js/ui/endSessionDialog.js | 2 +- + subprojects/gvc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js +index ca24d0698..66fc2e6f9 100644 +--- a/js/ui/endSessionDialog.js ++++ b/js/ui/endSessionDialog.js +@@ -420,65 +420,65 @@ class EndSessionDialog extends ModalDialog.ModalDialog { + return Clutter.EVENT_PROPAGATE; + + let key = event.get_key_symbol(); + if (key !== Clutter.KEY_Alt_L && key !== Clutter.KEY_Alt_R) + return Clutter.EVENT_PROPAGATE; + + if (type === Clutter.EventType.KEY_PRESS) + altEnabled = true; + + this._rebootButton.visible = !altEnabled; + this._rebootButtonAlt.visible = altEnabled; + + return Clutter.EVENT_PROPAGATE; + } + + _updateButtons() { + this.clearButtons(); + + this.addButton({ + action: this.cancel.bind(this), + label: _('Cancel'), + key: Clutter.KEY_Escape, + }); + + let dialogContent = DialogContent[this._type]; + for (let i = 0; i < dialogContent.confirmButtons.length; i++) { + let signal = dialogContent.confirmButtons[i].signal; + let label = dialogContent.confirmButtons[i].label; + let button = this.addButton({ + action: () => { +- this.close(true); + let signalId = this.connect('closed', () => { + this.disconnect(signalId); + this._confirm(signal); + }); ++ this.close(true); + }, + label, + }); + + // Add Alt "Boot Options" option to the Reboot button + if (this._canRebootToBootLoaderMenu && signal === 'ConfirmedReboot') { + this._rebootButton = button; + this._rebootButtonAlt = this.addButton({ + action: () => { + this.close(true); + let signalId = this.connect('closed', () => { + this.disconnect(signalId); + this._confirmRebootToBootLoaderMenu(); + }); + }, + label: C_('button', 'Boot Options'), + }); + this._rebootButtonAlt.visible = false; + this._capturedEventId = this.connect('captured-event', + this._onCapturedEvent.bind(this)); + } + } + } + + _stopAltCapture() { + if (this._capturedEventId > 0) { + global.stage.disconnect(this._capturedEventId); + this._capturedEventId = 0; + } + this._rebootButton = null; diff --git a/gnome-shell.spec b/gnome-shell.spec index 19f1a28..ef3ccd7 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -2,7 +2,7 @@ Name: gnome-shell Version: 44~beta -Release: 2%{?dist} +Release: 3%{?dist} Summary: Window management and application launching for GNOME License: GPLv2+ @@ -12,6 +12,9 @@ Source0: https://download.gnome.org/sources/gnome-shell/44/%{name}-%{tarb # Replace Epiphany with Firefox in the default favourite apps list Patch10001: gnome-shell-favourite-apps-firefox.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=2174753 +Patch20001: 0001-endSessionDialog-Don-t-emit-closed-until-handler-is-.patch + # Some users might have a broken PAM config, so we really need this # downstream patch to stop trying on configuration errors. Patch40001: 0001-gdm-Work-around-failing-fingerprint-auth.patch @@ -227,6 +230,10 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Porta %{_mandir}/man1/gnome-shell.1* %changelog +* Sun Mar 05 2023 Ray Strode - 44~beta-3 +- Fix slowdown in at shutdown + Resolves: #2174753 + * Mon Feb 20 2023 Adam Williamson - 44~beta-2 - Rebuild without changes for Bodhi reasons