Defer initializing UI until after the global session has loaded
https://bugzilla.gnome.org/show_bug.cgi?id=694321
This commit is contained in:
parent
1502e308b8
commit
7cdb75e7ce
@ -98,19 +98,21 @@ function start() {
|
|||||||
|
|
||||||
Gio.DesktopAppInfo.set_desktop_env('GNOME');
|
Gio.DesktopAppInfo.set_desktop_env('GNOME');
|
||||||
|
|
||||||
sessionMode = new SessionMode.SessionMode();
|
|
||||||
|
|
||||||
// start session after we know what mode we're running in
|
|
||||||
let signalId = sessionMode.connect('updated', function() {
|
|
||||||
sessionMode.disconnect(signalId);
|
|
||||||
startSession();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function startSession() {
|
|
||||||
shellDBusService = new ShellDBus.GnomeShell();
|
shellDBusService = new ShellDBus.GnomeShell();
|
||||||
shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
|
shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
|
||||||
|
|
||||||
|
sessionMode = new SessionMode.SessionMode();
|
||||||
|
sessionMode.connect('sessions-loaded', _sessionsLoaded);
|
||||||
|
sessionMode.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
function _sessionsLoaded() {
|
||||||
|
sessionMode.connect('updated', _sessionUpdated);
|
||||||
|
_initializeUI();
|
||||||
|
_sessionUpdated();
|
||||||
|
}
|
||||||
|
|
||||||
|
function _initializeUI() {
|
||||||
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
|
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
|
||||||
// also initialize ShellAppSystem first. ShellAppSystem
|
// also initialize ShellAppSystem first. ShellAppSystem
|
||||||
// needs to load all the .desktop files, and ShellWindowTracker
|
// needs to load all the .desktop files, and ShellWindowTracker
|
||||||
|
@ -158,12 +158,7 @@ function listModes() {
|
|||||||
const SessionMode = new Lang.Class({
|
const SessionMode = new Lang.Class({
|
||||||
Name: 'SessionMode',
|
Name: 'SessionMode',
|
||||||
|
|
||||||
_init: function() {
|
init: function() {
|
||||||
global.connect('notify::session-mode', Lang.bind(this, this._sync));
|
|
||||||
this._modes = _modes;
|
|
||||||
this._modeStack = [DEFAULT_MODE];
|
|
||||||
this._sync();
|
|
||||||
|
|
||||||
_getModes(Lang.bind(this, function(modes) {
|
_getModes(Lang.bind(this, function(modes) {
|
||||||
this._modes = modes;
|
this._modes = modes;
|
||||||
let primary = modes[global.session_mode] &&
|
let primary = modes[global.session_mode] &&
|
||||||
@ -171,6 +166,8 @@ const SessionMode = new Lang.Class({
|
|||||||
let mode = primary ? global.session_mode : 'user';
|
let mode = primary ? global.session_mode : 'user';
|
||||||
this._modeStack = [mode];
|
this._modeStack = [mode];
|
||||||
this._sync();
|
this._sync();
|
||||||
|
|
||||||
|
this.emit('sessions-loaded');
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user