[gnome-shell/gnome-3-36] windowManager: Allow xwayland startup to complete without systemd



commit fde8519002ed3d36f78eaa3800fe289b51830b42
Author: Florian Müllner <fmuellner gnome org>
Date:   Tue May 12 17:16:34 2020 +0200

    windowManager: Allow xwayland startup to complete without systemd
    
    Since commit 0ecddafc207 gsd-xsettings startup has been made conditional
    on the systemd user instance being available at runtime. While that is
    correct, it means that completing xwayland startup is also conditional
    now.
    
    We always want xwayland startup to go ahead, so wait for the XSettings
    plugin to appear on the bus when gsd-xsettings is launched by gnome-session
    and complete the task immediately if startup fails.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1252

 js/ui/windowManager.js | 46 ++++++++++++++++++++++++----------------------
 1 file changed, 24 insertions(+), 22 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index 14c914099f..3dacca2eca 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -902,31 +902,33 @@ var WindowManager = class {
             IBusManager.getIBusManager().restartDaemon(['--xim']);
 
             try {
-                if (Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail')) {
-                    /* Leave this watchdog timeout so don't block indefinitely here */
-                    let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
+                if (!Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail'))
+                    log('Not starting gsd-xsettings; waiting for gnome-session to do so');
+
+                /* Leave this watchdog timeout so don't block indefinitely here */
+                let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
+                    Gio.DBus.session.unwatch_name(watchId);
+                    log('Warning: Failed to start gsd-xsettings');
+                    task.return_boolean(true);
+                    timeoutId = 0;
+                    return GLib.SOURCE_REMOVE;
+                });
+
+                /* When gsd-xsettings daemon is started, we are good to resume */
+                let watchId = Gio.DBus.session.watch_name(
+                    'org.gnome.SettingsDaemon.XSettings',
+                    Gio.BusNameWatcherFlags.NONE,
+                    () => {
                         Gio.DBus.session.unwatch_name(watchId);
-                        log('Warning: Failed to start gsd-xsettings');
-                        task.return_boolean(true);
-                        timeoutId = 0;
-                        return GLib.SOURCE_REMOVE;
-                    });
-
-                    /* When gsd-xsettings daemon is started, we are good to resume */
-                    let watchId = Gio.DBus.session.watch_name(
-                        'org.gnome.SettingsDaemon.XSettings',
-                        Gio.BusNameWatcherFlags.NONE,
-                        () => {
-                            Gio.DBus.session.unwatch_name(watchId);
-                            if (timeoutId > 0) {
-                                task.return_boolean(true);
-                                GLib.source_remove(timeoutId);
-                            }
-                        },
-                        null);
-                }
+                        if (timeoutId > 0) {
+                            task.return_boolean(true);
+                            GLib.source_remove(timeoutId);
+                        }
+                    },
+                    null);
             } catch (e) {
                 log('Error starting gsd-xsettings: %s'.format(e.message));
+                task.return_boolean(true);
             }
 
             return true;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]