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]));