From 83e7f6f496c76b0f777428524ecca00d6239031f Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Fri, 16 Oct 2015 13:45:09 -0700 Subject: [PATCH] windowManager: fix fullscreen clone being left around If we get another effect on the same actor, we should make sure to remove the clone through the "overwrite" methods provided by Tweener, or there will be a race that might end up with a stray clone being left around. https://bugzilla.gnome.org/show_bug.cgi?id=756714 --- js/ui/windowManager.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index c8996d811..32b8c0f6c 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -1296,7 +1296,10 @@ const WindowManager = new Lang.Class({ transition: 'easeOutQuad', onComplete: this._sizeChangeWindowDone, onCompleteScope: this, - onCompleteParams: [shellwm, actor] + onCompleteParams: [shellwm, actor], + onOverwrite: this._sizeChangeWindowOverwritten, + onOverwriteScope: this, + onOverwriteParams: [shellwm, actor] }); // Now unfreeze actor updates, to get it to the new size. @@ -1321,6 +1324,16 @@ const WindowManager = new Lang.Class({ } }, + _sizeChangeWindowOverwritten: function(shellwm, actor) { + if (this._removeEffect(this._resizing, actor)) { + let actorClone = actor.__fullscreenClone; + if (actorClone) { + actorClone.destroy(); + delete actor.__fullscreenClone; + } + } + }, + _hasAttachedDialogs: function(window, ignoreWindow) { var count = 0; window.foreach_transient(function(win) {