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.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1166
This commit is contained in:
Ray Strode 2019-02-07 14:27:35 -05:00 committed by Florian Müllner
parent 9d6fcfdc85
commit 8e51fee5c1

View File

@ -1488,8 +1488,13 @@ var WindowManager = class {
if (this._clearAnimationInfo(actor))
this._shellwm.completed_size_change(actor);
let destroyId = actor.connect('destroy', () => {
this._clearAnimationInfo(actor);
});
actor.__animationInfo = { clone: actorClone,
oldRect: oldFrameRect };
oldRect: oldFrameRect,
destroyId: destroyId };
}
_sizeChangedWindow(shellwm, actor) {
@ -1550,6 +1555,7 @@ var WindowManager = class {
_clearAnimationInfo(actor) {
if (actor.__animationInfo) {
actor.__animationInfo.clone.destroy();
actor.disconnect(actor.__animationInfo.destroyId);
delete actor.__animationInfo;
return true;
}