aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/wlr/xwayland.h1
-rw-r--r--include/xwayland/meson.build4
-rw-r--r--xwayland/server.c8
3 files changed, 13 insertions, 0 deletions
diff --git a/include/wlr/xwayland.h b/include/wlr/xwayland.h
index 165ea944..f1c76f69 100644
--- a/include/wlr/xwayland.h
+++ b/include/wlr/xwayland.h
@@ -24,6 +24,7 @@ struct wlr_xwayland_server_options {
bool lazy;
bool enable_wm;
bool no_touch_pointer_emulation;
+ bool force_xrandr_emulation;
int terminate_delay; // in seconds, 0 to terminate immediately
};
diff --git a/include/xwayland/meson.build b/include/xwayland/meson.build
index adec52fc..b621bd89 100644
--- a/include/xwayland/meson.build
+++ b/include/xwayland/meson.build
@@ -1,5 +1,6 @@
have_listenfd = false
have_no_touch_pointer_emulation = false
+have_force_xrandr_emulation = false
have_terminate_delay = false
if xwayland.found()
xwayland_path = xwayland.get_variable('xwayland')
@@ -7,6 +8,8 @@ if xwayland.found()
default_value: 'false') == 'true'
have_no_touch_pointer_emulation = xwayland.get_variable(
'have_no_touch_pointer_emulation', default_value: 'false') == 'true'
+ have_force_xrandr_emulation = xwayland.get_variable(
+ 'have_force_xrandr_emulation', default_value: 'false') == 'true'
have_terminate_delay = xwayland.get_variable(pkgconfig: 'have_terminate_delay') == 'true'
else
xwayland_path = xwayland_prog.full_path()
@@ -16,6 +19,7 @@ xwayland_config_data = configuration_data()
xwayland_config_data.set_quoted('XWAYLAND_PATH', xwayland_path)
xwayland_config_data.set10('HAVE_XWAYLAND_LISTENFD', have_listenfd)
xwayland_config_data.set10('HAVE_XWAYLAND_NO_TOUCH_POINTER_EMULATION', have_no_touch_pointer_emulation)
+xwayland_config_data.set10('HAVE_XWAYLAND_FORCE_XRANDR_EMULATION', have_force_xrandr_emulation)
xwayland_config_data.set10('HAVE_XWAYLAND_TERMINATE_DELAY', have_terminate_delay)
configure_file(
output: 'config.h',
diff --git a/xwayland/server.c b/xwayland/server.c
index 8502fcec..0086ad65 100644
--- a/xwayland/server.c
+++ b/xwayland/server.c
@@ -90,6 +90,14 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server,
server->options.no_touch_pointer_emulation = false;
#endif
+#if HAVE_XWAYLAND_FORCE_XRANDR_EMULATION
+ if (server->options.force_xrandr_emulation) {
+ argv[i++] = "-force-xrandr-emulation";
+ }
+#else
+ server->options.force_xrandr_emulation = false;
+#endif
+
argv[i++] = NULL;
assert(i < sizeof(argv) / sizeof(argv[0]));