Use idle loop while waiting for Extension Manager

This commit is contained in:
Romain Vigier
2020-11-16 10:43:48 +01:00
parent 8f1f693a52
commit 3df547ae3e
+30 -24
View File
@@ -18,6 +18,7 @@ this program. If not, see <http s ://www.gnu.org/licenses/>.
'use strict'; 'use strict';
const { GLib } = imports.gi;
const { extensionUtils } = imports.misc; const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension(); const Me = extensionUtils.getCurrentExtension();
@@ -52,29 +53,31 @@ function init() {
} }
function enable() { function enable() {
_awaitExtensionManagerInit().then(() => { GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => waitForExtensionManager(start));
logDebug('Enabling extension...'); }
settings = new Settings();
timer = new Timer();
gtkThemer = new GtkThemer();
shellThemer = new ShellThemer();
iconThemer = new IconThemer();
cursorThemer = new CursorThemer();
backgrounder = new Backgrounder();
commander = new Commander();
settings.enable(); function start() {
gtkThemer.enable(); logDebug('Enabling extension...');
shellThemer.enable(); settings = new Settings();
iconThemer.enable(); timer = new Timer();
cursorThemer.enable(); gtkThemer = new GtkThemer();
backgrounder.enable(); shellThemer = new ShellThemer();
commander.enable(); iconThemer = new IconThemer();
timer.enable(); cursorThemer = new CursorThemer();
backgrounder = new Backgrounder();
commander = new Commander();
enabled = true; settings.enable();
logDebug('Extension enabled.'); gtkThemer.enable();
}); shellThemer.enable();
iconThemer.enable();
cursorThemer.enable();
backgrounder.enable();
commander.enable();
timer.enable();
enabled = true;
logDebug('Extension enabled.');
} }
function disable() { function disable() {
@@ -101,8 +104,11 @@ function disable() {
logDebug('Extension disabled.'); logDebug('Extension disabled.');
} }
async function _awaitExtensionManagerInit() { function waitForExtensionManager(callback) {
logDebug('Waiting for the Extension Manager to be initialized...'); logDebug('Waiting for Extension Manager initialization...');
while (!compat.extensionManagerInitialized()) while (!compat.extensionManagerInitialized())
await undefined; // eslint-disable-line no-await-in-loop continue;
logDebug('Extension Manager initialized.');
callback();
return false;
} }