PointerWatcher: keep a reference to the idle monitor

If nothing references the idle monitor, it can be finalized at GC,
causing it to have no effect. Worse, if the finalization happens at
wrong time, the pointer watcher can be permanently off, disabling the
message tray.

https://bugzilla.gnome.org/show_bug.cgi?id=691976
This commit is contained in:
Giovanni Campagna 2013-01-17 22:11:01 +01:00
parent df2cab877f
commit 56d76791f1

View File

@ -41,10 +41,10 @@ const PointerWatcher = new Lang.Class({
Name: 'PointerWatcher', Name: 'PointerWatcher',
_init: function() { _init: function() {
let idleMonitor = new GnomeDesktop.IdleMonitor(); this._idleMonitor = new GnomeDesktop.IdleMonitor();
idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive)); this._idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
idleMonitor.add_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle)); this._idleMonitor.add_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle));
this._idle = idleMonitor.get_idletime() > IDLE_TIME; this._idle = this._idleMonitor.get_idletime() > IDLE_TIME;
this._watches = []; this._watches = [];
this.pointerX = null; this.pointerX = null;
this.pointerY = null; this.pointerY = null;