xwayland: use -listenfd if available

Xwayland's -listen option was deprecated in [1] in favor of -listenfd.

[1]: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/593
This commit is contained in:
Simon Ser 2021-03-03 19:04:47 +01:00
parent eec2e1d3b1
commit e6f6e1ad0a
2 changed files with 9 additions and 1 deletions

View file

@ -1,11 +1,14 @@
have_listenfd = false
if xwayland.found() if xwayland.found()
xwayland_path = xwayland.get_pkgconfig_variable('xwayland') xwayland_path = xwayland.get_pkgconfig_variable('xwayland')
have_listenfd = xwayland.get_pkgconfig_variable('have_listenfd') == 'true'
else else
xwayland_path = xwayland_prog.full_path() xwayland_path = xwayland_prog.full_path()
endif endif
xwayland_config_data = configuration_data() xwayland_config_data = configuration_data()
xwayland_config_data.set_quoted('XWAYLAND_PATH', xwayland_path) xwayland_config_data.set_quoted('XWAYLAND_PATH', xwayland_path)
xwayland_config_data.set10('HAVE_XWAYLAND_LISTENFD', have_listenfd)
configure_file( configure_file(
output: 'config.h', output: 'config.h',
configuration: xwayland_config_data, configuration: xwayland_config_data,

View file

@ -64,8 +64,13 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server) {
char *argv[] = { char *argv[] = {
"Xwayland", NULL /* display, e.g. :1 */, "Xwayland", NULL /* display, e.g. :1 */,
"-rootless", "-terminate", "-core", "-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[0] */,
"-listen", NULL /* x_fd[1] */, "-listen", NULL /* x_fd[1] */,
#endif
"-wm", NULL /* wm_fd[1] */, "-wm", NULL /* wm_fd[1] */,
NULL, 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]); snprintf(wayland_socket_str, sizeof(wayland_socket_str), "%d", server->wl_fd[1]);
setenv("WAYLAND_SOCKET", wayland_socket_str, true); 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->wl_fd[1], server->display, server->x_fd[0],
server->x_fd[1], server->wm_fd[1]); server->x_fd[1], server->wm_fd[1]);