aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/xwayland/meson.build3
-rw-r--r--xwayland/server.c7
2 files changed, 9 insertions, 1 deletions
diff --git a/include/xwayland/meson.build b/include/xwayland/meson.build
index 16712083..37ddf4ca 100644
--- a/include/xwayland/meson.build
+++ b/include/xwayland/meson.build
@@ -1,11 +1,14 @@
+have_listenfd = false
if xwayland.found()
xwayland_path = xwayland.get_pkgconfig_variable('xwayland')
+ have_listenfd = xwayland.get_pkgconfig_variable('have_listenfd') == 'true'
else
xwayland_path = xwayland_prog.full_path()
endif
xwayland_config_data = configuration_data()
xwayland_config_data.set_quoted('XWAYLAND_PATH', xwayland_path)
+xwayland_config_data.set10('HAVE_XWAYLAND_LISTENFD', have_listenfd)
configure_file(
output: 'config.h',
configuration: xwayland_config_data,
diff --git a/xwayland/server.c b/xwayland/server.c
index f5c6b060..58ba1a8e 100644
--- a/xwayland/server.c
+++ b/xwayland/server.c
@@ -64,8 +64,13 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server) {
char *argv[] = {
"Xwayland", NULL /* display, e.g. :1 */,
"-rootless", "-terminate", "-core",
+#if HAVE_XWAYLAND_LISTENFD
+ "-listenfd", NULL /* x_fd[0] */,
+ "-listenfd", NULL /* x_fd[1] */,
+#else
"-listen", NULL /* x_fd[0] */,
"-listen", NULL /* x_fd[1] */,
+#endif
"-wm", NULL /* wm_fd[1] */,
NULL,
};
@@ -91,7 +96,7 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server) {
snprintf(wayland_socket_str, sizeof(wayland_socket_str), "%d", server->wl_fd[1]);
setenv("WAYLAND_SOCKET", wayland_socket_str, true);
- wlr_log(WLR_INFO, "WAYLAND_SOCKET=%d Xwayland :%d -rootless -terminate -core -listen %d -listen %d -wm %d",
+ wlr_log(WLR_INFO, "WAYLAND_SOCKET=%d Xwayland :%d -rootless -terminate -core -listenfd %d -listenfd %d -wm %d",
server->wl_fd[1], server->display, server->x_fd[0],
server->x_fd[1], server->wm_fd[1]);