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';
const { GLib } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
@@ -52,29 +53,31 @@ function init() {
}
function enable() {
_awaitExtensionManagerInit().then(() => {
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();
GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => waitForExtensionManager(start));
}
settings.enable();
gtkThemer.enable();
shellThemer.enable();
iconThemer.enable();
cursorThemer.enable();
backgrounder.enable();
commander.enable();
timer.enable();
function 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();
enabled = true;
logDebug('Extension enabled.');
});
settings.enable();
gtkThemer.enable();
shellThemer.enable();
iconThemer.enable();
cursorThemer.enable();
backgrounder.enable();
commander.enable();
timer.enable();
enabled = true;
logDebug('Extension enabled.');
}
function disable() {
@@ -101,8 +104,11 @@ function disable() {
logDebug('Extension disabled.');
}
async function _awaitExtensionManagerInit() {
logDebug('Waiting for the Extension Manager to be initialized...');
function waitForExtensionManager(callback) {
logDebug('Waiting for Extension Manager initialization...');
while (!compat.extensionManagerInitialized())
await undefined; // eslint-disable-line no-await-in-loop
continue;
logDebug('Extension Manager initialized.');
callback();
return false;
}