diff --git a/js/ui/main.js b/js/ui/main.js index e8269f09b..17f5bc716 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -229,7 +229,11 @@ function _initializeUI() { EndSessionDialog.init(); // We're ready for the session manager to move to the next phase - Meta.register_with_session(); + GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { + Shell.util_sd_notify(); + Meta.register_with_session(); + return GLib.SOURCE_REMOVE; + }); _startDate = new Date(); diff --git a/src/main.c b/src/main.c index 489026b76..6faf9934f 100644 --- a/src/main.c +++ b/src/main.c @@ -24,14 +24,6 @@ #include "shell-perf-log.h" #include "st.h" -#ifdef HAVE_SYSTEMD -#include -#else -/* So we don't need to add ifdef's everywhere */ -#define sd_notify(u, m) do {} while (0) -#define sd_notifyf(u, m, ...) do {} while (0) -#endif - extern GType gnome_shell_plugin_get_type (void); #define SHELL_DBUS_SERVICE "org.gnome.Shell" @@ -532,9 +524,6 @@ main (int argc, char **argv) shell_init_debug (g_getenv ("SHELL_DEBUG")); shell_dbus_init (meta_get_replace_current_wm ()); - /* We only use NOTIFY_SOCKET exactly once; unset it so it doesn't remain in - * our environment. */ - sd_notify (1, "READY=1"); shell_a11y_init (); shell_perf_log_init (); shell_introspection_init (); diff --git a/src/shell-util.c b/src/shell-util.c index c22dd1c6e..f93462c73 100644 --- a/src/shell-util.c +++ b/src/shell-util.c @@ -26,6 +26,14 @@ #include #endif +#ifdef HAVE_SYSTEMD +#include +#else +/* So we don't need to add ifdef's everywhere */ +#define sd_notify(u, m) do {} while (0) +#define sd_notifyf(u, m, ...) do {} while (0) +#endif + static void stop_pick (ClutterActor *actor, const ClutterColor *color) @@ -659,3 +667,11 @@ shell_util_stop_systemd_unit (const char *unit, { return shell_util_systemd_call ("StopUnit", unit, mode, error); } + +void +shell_util_sd_notify (void) +{ + /* We only use NOTIFY_SOCKET exactly once; unset it so it doesn't remain in + * our environment. */ + sd_notify (1, "READY=1"); +} diff --git a/src/shell-util.h b/src/shell-util.h index c41e02c79..4453beb4a 100644 --- a/src/shell-util.h +++ b/src/shell-util.h @@ -66,6 +66,8 @@ gboolean shell_util_stop_systemd_unit (const char *unit, const char *mode, GError **error); +void shell_util_sd_notify (void); + G_END_DECLS #endif /* __SHELL_UTIL_H__ */