Use idle loop while waiting for Extension Manager
This commit is contained in:
+11
-5
@@ -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,7 +53,10 @@ function init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function enable() {
|
function enable() {
|
||||||
_awaitExtensionManagerInit().then(() => {
|
GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => waitForExtensionManager(start));
|
||||||
|
}
|
||||||
|
|
||||||
|
function start() {
|
||||||
logDebug('Enabling extension...');
|
logDebug('Enabling extension...');
|
||||||
settings = new Settings();
|
settings = new Settings();
|
||||||
timer = new Timer();
|
timer = new Timer();
|
||||||
@@ -74,7 +78,6 @@ function enable() {
|
|||||||
|
|
||||||
enabled = true;
|
enabled = true;
|
||||||
logDebug('Extension enabled.');
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user