Fix slowdown at shutdown

Resolves: #2174753
This commit is contained in:
Ray Strode 2023-03-05 20:17:45 -05:00
parent a8f0c2e257
commit 45add8a213
2 changed files with 100 additions and 1 deletions

View File

@ -0,0 +1,92 @@
From 5b1260864b3a1a28d778a8610b4eb13c0bd52c99 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
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;

View File

@ -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 <rstrode@redhat.com> - 44~beta-3
- Fix slowdown in at shutdown
Resolves: #2174753
* Mon Feb 20 2023 Adam Williamson <awilliam@redhat.com> - 44~beta-2
- Rebuild without changes for Bodhi reasons