diff --git a/config.h.meson b/config.h.meson index 5a290b014..6fb8c3af8 100644 --- a/config.h.meson +++ b/config.h.meson @@ -71,5 +71,8 @@ /* Whether Xwayland has -initfd option */ #mesondefine HAVE_XWAYLAND_INITFD +/* Whether Xwayland has -listenfd option */ +#mesondefine HAVE_XWAYLAND_LISTENFD + /* Whether the Xwayland supports +/-byteswappedclients */ #mesondefine HAVE_XWAYLAND_BYTE_SWAPPED_CLIENTS diff --git a/meson.build b/meson.build index 3680762a9..79a0e8144 100644 --- a/meson.build +++ b/meson.build @@ -376,6 +376,8 @@ if cc.has_header_symbol('sys/prctl.h', 'prctl') endif have_xwayland_initfd = false +have_xwayland_listenfd = false + have_xwayland_byte_swapped_clients = false if have_wayland xwayland_dep = dependency('xwayland', required: false) @@ -418,6 +420,15 @@ if have_wayland cdata.set('HAVE_XWAYLAND_INITFD', 1) endif + # For Xwayland -listenfd usage + if xwayland_dep.found() + have_xwayland_listenfd = xwayland_dep.get_pkgconfig_variable('have_listenfd') == 'true' + endif + + if (have_xwayland_listenfd) + cdata.set('HAVE_XWAYLAND_LISTENFD', 1) + endif + # For Xwayland +/-byteswappedclients usage if xwayland_dep.found() have_xwayland_byte_swapped_clients = xwayland_dep.get_variable('have_byteswappedclients', @@ -489,6 +500,7 @@ output = [ ' Introspection.................... ' + have_introspection.to_string(), ' Profiler......................... ' + have_profiler.to_string(), ' Xwayland initfd.................. ' + have_xwayland_initfd.to_string(), + ' Xwayland listenfd................ ' + have_xwayland_listenfd.to_string(), ' Xwayland byte-swapped clients.... ' + have_xwayland_byte_swapped_clients.to_string(), '', ' Tests:', diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c index 491d65af7..3d787fa13 100644 --- a/src/wayland/meta-xwayland.c +++ b/src/wayland/meta-xwayland.c @@ -44,6 +44,12 @@ #include "wayland/meta-xwayland-surface.h" #include "x11/meta-x11-display-private.h" +#ifdef HAVE_XWAYLAND_LISTENFD +#define XWAYLAND_LISTENFD "-listenfd" +#else +#define XWAYLAND_LISTENFD "-listen" +#endif + static int display_number_override = -1; static void meta_xwayland_stop_xserver (MetaXWaylandManager *manager); @@ -640,6 +646,9 @@ meta_xwayland_start_xserver (MetaXWaylandManager *manager, args[i++] = "-core"; args[i++] = "-auth"; args[i++] = manager->auth_file; + args[i++] = XWAYLAND_LISTENFD; + args[i++] = "4"; + args[i++] = XWAYLAND_LISTENFD; args[i++] = "-listen"; args[i++] = "4"; args[i++] = "-listen"; @@ -650,7 +659,7 @@ meta_xwayland_start_xserver (MetaXWaylandManager *manager, args[i++] = "-initfd"; args[i++] = "7"; #else - args[i++] = "-listen"; + args[i++] = XWAYLAND_LISTENFD; args[i++] = "7"; #endif