[gnome-shell] animation: Stop the animation before removing all the children
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] animation: Stop the animation before removing all the children
- Date: Mon, 9 Sep 2019 19:37:08 +0000 (UTC)
commit ea4d5f89eb01c4cb4ec92840adef576cf13af0f9
Author: Marco Trevisan (Treviño) <mail 3v1n0 net>
Date: Fri Jun 14 17:48:16 2019 +0300
animation: Stop the animation before removing all the children
If the resource scale or the scale factor changes while the animation
is playing, we need to stop the animation and start it again once the
texture is loaded, as the idle might try to access an invalidated
animation child otherwise.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700
js/ui/animation.js | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/animation.js b/js/ui/animation.js
index d66eaa4044..528fb8220f 100644
--- a/js/ui/animation.js
+++ b/js/ui/animation.js
@@ -54,12 +54,19 @@ var Animation = class {
_loadFile(file, width, height) {
let [validResourceScale, resourceScale] = this.actor.get_resource_scale();
+ let wasPlaying = this._isPlaying;
+
+ if (this._isPlaying)
+ this.stop();
this._isLoaded = false;
this.actor.destroy_all_children();
- if (!validResourceScale)
+ if (!validResourceScale) {
+ if (wasPlaying)
+ this.play();
return;
+ }
let textureCache = St.TextureCache.get_default();
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
@@ -67,6 +74,9 @@ var Animation = class {
scaleFactor, resourceScale,
this._animationsLoaded.bind(this));
this.actor.set_child(this._animations);
+
+ if (wasPlaying)
+ this.play();
}
_showFrame(frame) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]