Skip to content

Commit 17744ba

Browse files
committed
Updates polling mechanism
1 parent 6acb9a4 commit 17744ba

File tree

1 file changed

+70
-60
lines changed

1 file changed

+70
-60
lines changed

extension.js

Lines changed: 70 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -362,67 +362,77 @@ export default class MyExtension extends Extension {
362362
}
363363
}
364364

365-
enable() {
366-
var self = this;
367-
368-
let poller = setInterval(() => {
369-
if (Main.panel.statusArea.quickSettings._system) {
370-
self._setting = self.getSettings()
371-
self._checkRequirements();
372-
self._loginManager = LoginManager.getLoginManager();
373-
self.systemMenu = Main.panel.statusArea.quickSettings._system;
374-
self._hibernateMenuItem = new PopupMenu.PopupMenuItem(__('Hibernate'));
375-
self._hibernateMenuItemId = self._hibernateMenuItem.connect(
376-
'activate',
377-
() => self._onHibernateClicked()
378-
);
379-
380-
self._hybridSleepMenuItem = new PopupMenu.PopupMenuItem(
381-
__('Hybrid Sleep')
382-
);
383-
self._hybridSleepMenuItemId = self._hybridSleepMenuItem.connect(
384-
'activate',
385-
() => self._onHybridSleepClicked()
386-
);
387-
388-
self._suspendThenHibernateMenuItem = new PopupMenu.PopupMenuItem(
389-
__('Suspend then Hibernate')
390-
);
391-
self._suspendThenHibernateMenuItemId = self._suspendThenHibernateMenuItem.connect(
392-
'activate',
393-
() => self._onSuspendThenHibernateClicked()
394-
);
395-
396-
let afterSuspendPosition =
397-
self.systemMenu._systemItem.menu.numMenuItems - 5;
398-
399-
self.systemMenu._systemItem.menu.addMenuItem(
400-
self._hybridSleepMenuItem,
401-
afterSuspendPosition
402-
);
403-
self.systemMenu._systemItem.menu.addMenuItem(
404-
self._hibernateMenuItem,
405-
afterSuspendPosition
406-
);
407-
self.systemMenu._systemItem.menu.addMenuItem(
408-
self._suspendThenHibernateMenuItem,
409-
afterSuspendPosition
410-
);
411-
412-
self._menuOpenStateChangedId = self.systemMenu._systemItem.menu.connect(
413-
'open-state-changed',
414-
(menu, open) => {
415-
if (!open) return;
416-
self._updateDefaults();
417-
self._updateHaveHibernate();
418-
self._updateHaveHybridSleep();
419-
self._updateHaveSuspendThenHibernate();
420-
}
421-
);
422-
423-
clearInterval(poller);
365+
_modifySystemItem() {
366+
this._setting = this.getSettings()
367+
this._checkRequirements();
368+
this._loginManager = LoginManager.getLoginManager();
369+
this.systemMenu = Main.panel.statusArea.quickSettings._system;
370+
this._hibernateMenuItem = new PopupMenu.PopupMenuItem(__('Hibernate'));
371+
this._hibernateMenuItemId = this._hibernateMenuItem.connect(
372+
'activate',
373+
() => this._onHibernateClicked()
374+
);
375+
376+
this._hybridSleepMenuItem = new PopupMenu.PopupMenuItem(
377+
__('Hybrid Sleep')
378+
);
379+
this._hybridSleepMenuItemId = this._hybridSleepMenuItem.connect(
380+
'activate',
381+
() => this._onHybridSleepClicked()
382+
);
383+
384+
this._suspendThenHibernateMenuItem = new PopupMenu.PopupMenuItem(
385+
__('Suspend then Hibernate')
386+
);
387+
this._suspendThenHibernateMenuItemId = this._suspendThenHibernateMenuItem.connect(
388+
'activate',
389+
() => this._onSuspendThenHibernateClicked()
390+
);
391+
392+
let afterSuspendPosition =
393+
this.systemMenu._systemItem.menu.numMenuItems - 5;
394+
395+
this.systemMenu._systemItem.menu.addMenuItem(
396+
this._hybridSleepMenuItem,
397+
afterSuspendPosition
398+
);
399+
this.systemMenu._systemItem.menu.addMenuItem(
400+
this._hibernateMenuItem,
401+
afterSuspendPosition
402+
);
403+
this.systemMenu._systemItem.menu.addMenuItem(
404+
this._suspendThenHibernateMenuItem,
405+
afterSuspendPosition
406+
);
407+
408+
this._menuOpenStateChangedId = this.systemMenu._systemItem.menu.connect(
409+
'open-state-changed',
410+
(menu, open) => {
411+
if (!open) return;
412+
this._updateDefaults();
413+
this._updateHaveHibernate();
414+
this._updateHaveHybridSleep();
415+
this._updateHaveSuspendThenHibernate();
424416
}
425-
}, 50);
417+
);
418+
}
419+
420+
_queueModifySystemItem() {
421+
this.sourceId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
422+
if (!Main.panel.statusArea.quickSettings._system)
423+
return GLib.SOURCE_CONTINUE;
424+
425+
this._modifySystemItem();
426+
return GLib.SOURCE_REMOVE;
427+
});
428+
}
429+
430+
enable() {
431+
if (!Main.panel.statusArea.quickSettings._system) {
432+
this._queueModifySystemItem();
433+
} else {
434+
this._modifySystemItem();
435+
}
426436
}
427437

428438
disable() {

0 commit comments

Comments
 (0)