Fix JSObject leak in workspace.js
https://bugzilla.gnome.org/show_bug.cgi?id=612318
This commit is contained in:
parent
9a2d883cf5
commit
46bce04788
@ -37,6 +37,10 @@ _Draggable.prototype = {
|
|||||||
if (!manualMode)
|
if (!manualMode)
|
||||||
this.actor.connect('button-press-event',
|
this.actor.connect('button-press-event',
|
||||||
Lang.bind(this, this._onButtonPress));
|
Lang.bind(this, this._onButtonPress));
|
||||||
|
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, function() {
|
||||||
|
this.disconnectAll();
|
||||||
|
}));
|
||||||
this._onEventId = null;
|
this._onEventId = null;
|
||||||
|
|
||||||
this._buttonDown = false; // The mouse button has been pressed and has not yet been released.
|
this._buttonDown = false; // The mouse button has been pressed and has not yet been released.
|
||||||
|
@ -199,8 +199,12 @@ WindowClone.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
|
this.metaWindow._delegate = null;
|
||||||
|
this.actor._delegate = null;
|
||||||
if (this._zoomLightbox)
|
if (this._zoomLightbox)
|
||||||
this._zoomLightbox.destroy();
|
this._zoomLightbox.destroy();
|
||||||
|
|
||||||
|
this.disconnectAll();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onEnter: function (actor, event) {
|
_onEnter: function (actor, event) {
|
||||||
@ -1370,8 +1374,8 @@ Workspace.prototype = {
|
|||||||
Mainloop.source_remove(this._repositionWindowsId);
|
Mainloop.source_remove(this._repositionWindowsId);
|
||||||
this._repositionWindowsId = 0;
|
this._repositionWindowsId = 0;
|
||||||
}
|
}
|
||||||
Main.overview.connect('hidden', Lang.bind(this,
|
this._overviewHiddenId = Main.overview.connect('hidden', Lang.bind(this,
|
||||||
this._doneLeavingOverview));
|
this._doneLeavingOverview));
|
||||||
|
|
||||||
// Position and scale the windows.
|
// Position and scale the windows.
|
||||||
for (let i = 1; i < this._windows.length; i++) {
|
for (let i = 1; i < this._windows.length; i++) {
|
||||||
@ -1479,6 +1483,10 @@ Workspace.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function(actor) {
|
_onDestroy: function(actor) {
|
||||||
|
if (this._overviewHiddenId) {
|
||||||
|
Main.overview.disconnect(this._overviewHiddenId);
|
||||||
|
this._overviewHiddenId = 0;
|
||||||
|
}
|
||||||
Tweener.removeTweens(actor);
|
Tweener.removeTweens(actor);
|
||||||
|
|
||||||
this._metaWorkspace.disconnect(this._windowAddedId);
|
this._metaWorkspace.disconnect(this._windowAddedId);
|
||||||
@ -1493,6 +1501,7 @@ Workspace.prototype = {
|
|||||||
// the desktop window, which is never reparented
|
// the desktop window, which is never reparented
|
||||||
for (let w = 1; w < this._windows.length; w++)
|
for (let w = 1; w < this._windows.length; w++)
|
||||||
this._windows[w].destroy();
|
this._windows[w].destroy();
|
||||||
|
this._windows = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
// Sets this.leavingOverview flag to false.
|
// Sets this.leavingOverview flag to false.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user