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
+11 -5
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,7 +53,10 @@ function init() {
}
function enable() {
_awaitExtensionManagerInit().then(() => {
GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => waitForExtensionManager(start));
}
function start() {
logDebug('Enabling extension...');
settings = new Settings();
timer = new Timer();
@@ -74,7 +78,6 @@ function 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;
}