d0dbd22662
Resolves: #1924908
50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
From 19cdbd50dca4ea08d18ffad22a96efc3e4e372d3 Mon Sep 17 00:00:00 2001
|
|
From: Benjamin Berg <bberg@redhat.com>
|
|
Date: Thu, 11 Mar 2021 18:52:48 +0100
|
|
Subject: [PATCH] main: Force Xwayland startup if not on systemd
|
|
|
|
In non-systemd managed session we are unable to start services on
|
|
demand. Instead, gnome-session will start everything at login time,
|
|
including any X11 related service (i.e. gsd-xsettings).
|
|
|
|
However, in order to start gsd-xsettings, Xwayland needs to be started
|
|
already. Otherwise it will connect to GNOME_SETUP_DISPLAY and login will
|
|
hang at that point.
|
|
|
|
Fix this by detecting whether mutter is running in a systemd unit. If it
|
|
is, we assume that we are systemd managed and the machinery to start the
|
|
services works fine. If not, we assume that the session management may
|
|
unconditionally try to start X11 related services and Xwayland must be
|
|
started in order to not block this.
|
|
---
|
|
src/core/main.c | 9 ++++++++-
|
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/core/main.c b/src/core/main.c
|
|
index 6b26990c6..c189eceb5 100644
|
|
--- a/src/core/main.c
|
|
+++ b/src/core/main.c
|
|
@@ -1014,11 +1014,18 @@ meta_get_x11_display_policy (void)
|
|
#ifdef HAVE_WAYLAND
|
|
if (meta_is_wayland_compositor ())
|
|
{
|
|
+#ifdef HAVE_XWAYLAND_INITFD
|
|
+ g_autofree char *unit = NULL;
|
|
+#endif
|
|
+
|
|
if (opt_no_x11)
|
|
return META_DISPLAY_POLICY_DISABLED;
|
|
|
|
#ifdef HAVE_XWAYLAND_INITFD
|
|
- return META_DISPLAY_POLICY_ON_DEMAND;
|
|
+ if (sd_pid_get_user_unit (0, &unit) < 0)
|
|
+ return META_DISPLAY_POLICY_MANDATORY;
|
|
+ else
|
|
+ return META_DISPLAY_POLICY_ON_DEMAND;
|
|
#endif
|
|
}
|
|
#endif
|
|
--
|
|
2.29.2
|
|
|