windowManager: Handle return value/errors from systemd unit calls
These may produce errors, and return a value indicating we should proceed further. Check for those when starting/stopping gsd-xsettings. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1238 https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2755
This commit is contained in:
parent
5f945294c8
commit
894ca0dd07
@ -900,8 +900,9 @@ var WindowManager = class {
|
|||||||
|
|
||||||
global.display.connect('init-xserver', (display, task) => {
|
global.display.connect('init-xserver', (display, task) => {
|
||||||
IBusManager.getIBusManager().restartDaemon(['--xim']);
|
IBusManager.getIBusManager().restartDaemon(['--xim']);
|
||||||
Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail');
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail')) {
|
||||||
/* Leave this watchdog timeout so don't block indefinitely here */
|
/* Leave this watchdog timeout so don't block indefinitely here */
|
||||||
let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
|
let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
|
||||||
Gio.DBus.session.unwatch_name(watchId);
|
Gio.DBus.session.unwatch_name(watchId);
|
||||||
@ -923,12 +924,21 @@ var WindowManager = class {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
null);
|
null);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
log('Error starting gsd-xsettings: %s'.format(e.message));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
global.display.connect('x11-display-closing', () => {
|
global.display.connect('x11-display-closing', () => {
|
||||||
if (!Meta.is_wayland_compositor())
|
if (!Meta.is_wayland_compositor())
|
||||||
return;
|
return;
|
||||||
|
try {
|
||||||
Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
|
Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
|
||||||
|
} catch (e) {
|
||||||
|
log('Error stopping gsd-xsettings: %s'.format(e.message));
|
||||||
|
}
|
||||||
IBusManager.getIBusManager().restartDaemon();
|
IBusManager.getIBusManager().restartDaemon();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user