3ecde27071
Resolves #2063156
125 lines
4.2 KiB
Diff
125 lines
4.2 KiB
Diff
From e69da36095d5093c1c7bec7a9c96c079c0b837f9 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
Date: Wed, 13 Apr 2022 20:57:05 +0200
|
|
Subject: [PATCH 1/3] layout: Make sure startup animation completes
|
|
|
|
We currently complete the animation using an onComplete handler,
|
|
which only runs if the corresponding transition was stopped when
|
|
finished.
|
|
|
|
While it is unexpected that the transition is interrupted, it can
|
|
apparently happen under some circumstances (like VMs with qlx).
|
|
The consequences of that are pretty bad, mainly due to the cover
|
|
pane that prevents input during the animation not getting removed.
|
|
|
|
Address this by always completing the animation when the transition
|
|
is stopped, regardless of whether it completed or not.
|
|
|
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5337
|
|
|
|
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2269>
|
|
---
|
|
js/ui/layout.js | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/js/ui/layout.js b/js/ui/layout.js
|
|
index 0f279f86c..fe91ff186 100644
|
|
--- a/js/ui/layout.js
|
|
+++ b/js/ui/layout.js
|
|
@@ -740,14 +740,14 @@ var LayoutManager = GObject.registerClass({
|
|
translation_y: 0,
|
|
duration: STARTUP_ANIMATION_TIME,
|
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
|
- onComplete: () => this._startupAnimationComplete(),
|
|
+ onStopped: () => this._startupAnimationComplete(),
|
|
});
|
|
}
|
|
|
|
_startupAnimationSession() {
|
|
- const onComplete = () => this._startupAnimationComplete();
|
|
+ const onStopped = () => this._startupAnimationComplete();
|
|
if (Main.sessionMode.hasOverview) {
|
|
- Main.overview.runStartupAnimation(onComplete);
|
|
+ Main.overview.runStartupAnimation(onStopped);
|
|
} else {
|
|
this.uiGroup.ease({
|
|
scale_x: 1,
|
|
@@ -755,7 +755,7 @@ var LayoutManager = GObject.registerClass({
|
|
opacity: 255,
|
|
duration: STARTUP_ANIMATION_TIME,
|
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
|
- onComplete,
|
|
+ onStopped,
|
|
});
|
|
}
|
|
}
|
|
--
|
|
2.35.1
|
|
|
|
|
|
From dd28832dcdb7ef390cc444ec046cfafce56ebc81 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
Date: Wed, 13 Apr 2022 20:14:47 +0200
|
|
Subject: [PATCH 2/3] background: Pass cancellable when querying file info
|
|
|
|
Otherwise it is possible that the operation completes successfully
|
|
after the background has been destroyed, which will throw a warning
|
|
(caused by accessing the this._fileWatches object after it has been
|
|
nulled).
|
|
|
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5337
|
|
|
|
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2268>
|
|
---
|
|
js/ui/background.js | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/js/ui/background.js b/js/ui/background.js
|
|
index 198194a50..825fee0d9 100644
|
|
--- a/js/ui/background.js
|
|
+++ b/js/ui/background.js
|
|
@@ -492,7 +492,7 @@ var Background = GObject.registerClass({
|
|
Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
|
|
Gio.FileQueryInfoFlags.NONE,
|
|
0,
|
|
- null);
|
|
+ this._cancellable);
|
|
} catch (e) {
|
|
this._setLoaded();
|
|
return;
|
|
--
|
|
2.35.1
|
|
|
|
|
|
From ef74f922d65d38718b5d8cb13bc43f129947ffc0 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
Date: Wed, 13 Apr 2022 20:51:55 +0200
|
|
Subject: [PATCH 3/3] background: Do not queue idle when cancelled
|
|
|
|
A cancelled cancellable means that the background was destroyed,
|
|
so we shouldn't queue an idle or emit the 'loaded' signal anymore.
|
|
|
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5337
|
|
|
|
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2268>
|
|
---
|
|
js/ui/background.js | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/js/ui/background.js b/js/ui/background.js
|
|
index 825fee0d9..a68f23301 100644
|
|
--- a/js/ui/background.js
|
|
+++ b/js/ui/background.js
|
|
@@ -333,6 +333,8 @@ var Background = GObject.registerClass({
|
|
return;
|
|
|
|
this.isLoaded = true;
|
|
+ if (this._cancellable?.is_cancelled())
|
|
+ return;
|
|
|
|
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
|
|
this.emit('loaded');
|
|
--
|
|
2.35.1
|
|
|