[gnome-shell/wip/reap-the-undead-clones] windowManager: ensure actor resize clone dies with actor
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/reap-the-undead-clones] windowManager: ensure actor resize clone dies with actor
- Date: Thu, 7 Feb 2019 19:38:00 +0000 (UTC)
commit c8be553e4be154a3f45c492693f02f67a5c41f54
Author: Ray Strode <rstrode redhat com>
Date: Thu Feb 7 14:27:35 2019 -0500
windowManager: ensure actor resize clone dies with actor
If a window gets destroyed right before it's resize
animation starts the user can get confronted with an undead
zombie clone that doesn't go away.
This commit makes sure said clones get reaped with their
actors.
js/ui/windowManager.js | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index 16239a255..9da5af704 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -1466,8 +1466,15 @@ var WindowManager = class {
if (this._clearAnimationInfo(actor))
this._shellwm.completed_size_change(actor);
+ let destroyId = actor.connect('destroy', () => {
+ if (this._clearAnimationInfo(actor)) {
+ log("WARNING: actor died with clone still alive!");
+ }
+ });
actor.__animationInfo = { clone: actorClone,
- oldRect: oldFrameRect };
+ oldRect: oldFrameRect,
+ destroyId: destroyId };
+
}
_sizeChangedWindow(shellwm, actor) {
@@ -1528,6 +1535,7 @@ var WindowManager = class {
_clearAnimationInfo(actor) {
if (actor.__animationInfo) {
actor.__animationInfo.clone.destroy();
+ actor.disconnect(actor.__animationInfo.destroyId);
delete actor.__animationInfo;
return true;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]