aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/meson.build2
-rw-r--r--include/xwayland/meson.build12
-rw-r--r--xwayland/server.c6
3 files changed, 20 insertions, 0 deletions
diff --git a/include/meson.build b/include/meson.build
index 30b9f2fe..c72eada5 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -6,6 +6,8 @@ if not features.get('x11-backend')
endif
if not features.get('xwayland')
exclude_files += 'xwayland.h'
+else
+ subdir('xwayland')
endif
if not features.get('xdg-foreign')
exclude_files += [
diff --git a/include/xwayland/meson.build b/include/xwayland/meson.build
new file mode 100644
index 00000000..16712083
--- /dev/null
+++ b/include/xwayland/meson.build
@@ -0,0 +1,12 @@
+if xwayland.found()
+ xwayland_path = xwayland.get_pkgconfig_variable('xwayland')
+else
+ xwayland_path = xwayland_prog.full_path()
+endif
+
+xwayland_config_data = configuration_data()
+xwayland_config_data.set_quoted('XWAYLAND_PATH', xwayland_path)
+configure_file(
+ output: 'config.h',
+ configuration: xwayland_config_data,
+)
diff --git a/xwayland/server.c b/xwayland/server.c
index 6a0c9fc3..f5c6b060 100644
--- a/xwayland/server.c
+++ b/xwayland/server.c
@@ -16,6 +16,7 @@
#include <wlr/xwayland.h>
#include "sockets.h"
#include "util/signal.h"
+#include "xwayland/config.h"
static void safe_close(int fd) {
if (fd >= 0) {
@@ -442,6 +443,11 @@ void wlr_xwayland_server_destroy(struct wlr_xwayland_server *server) {
struct wlr_xwayland_server *wlr_xwayland_server_create(
struct wl_display *wl_display,
struct wlr_xwayland_server_options *options) {
+ if (!getenv("WLR_XWAYLAND") && access(XWAYLAND_PATH, X_OK) != 0) {
+ wlr_log(WLR_ERROR, "Cannot find Xwayland binary \"%s\"", XWAYLAND_PATH);
+ return NULL;
+ }
+
struct wlr_xwayland_server *server =
calloc(1, sizeof(struct wlr_xwayland_server));
if (!server) {