xwayland: Add support for -force-xrandr-emulation

This commit is contained in:
Joshua Ashton 2022-05-18 14:43:48 +00:00 committed by Simon Ser
parent 17b2b06633
commit 02e648c1b2
3 changed files with 13 additions and 0 deletions

View file

@ -24,6 +24,7 @@ struct wlr_xwayland_server_options {
bool lazy; bool lazy;
bool enable_wm; bool enable_wm;
bool no_touch_pointer_emulation; bool no_touch_pointer_emulation;
bool force_xrandr_emulation;
int terminate_delay; // in seconds, 0 to terminate immediately int terminate_delay; // in seconds, 0 to terminate immediately
}; };

View file

@ -1,5 +1,6 @@
have_listenfd = false have_listenfd = false
have_no_touch_pointer_emulation = false have_no_touch_pointer_emulation = false
have_force_xrandr_emulation = false
have_terminate_delay = false have_terminate_delay = false
if xwayland.found() if xwayland.found()
xwayland_path = xwayland.get_variable('xwayland') xwayland_path = xwayland.get_variable('xwayland')
@ -7,6 +8,8 @@ if xwayland.found()
default_value: 'false') == 'true' default_value: 'false') == 'true'
have_no_touch_pointer_emulation = xwayland.get_variable( have_no_touch_pointer_emulation = xwayland.get_variable(
'have_no_touch_pointer_emulation', default_value: 'false') == 'true' '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' have_terminate_delay = xwayland.get_variable(pkgconfig: 'have_terminate_delay') == 'true'
else else
xwayland_path = xwayland_prog.full_path() 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.set_quoted('XWAYLAND_PATH', xwayland_path)
xwayland_config_data.set10('HAVE_XWAYLAND_LISTENFD', have_listenfd) 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_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) xwayland_config_data.set10('HAVE_XWAYLAND_TERMINATE_DELAY', have_terminate_delay)
configure_file( configure_file(
output: 'config.h', output: 'config.h',

View file

@ -90,6 +90,14 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server,
server->options.no_touch_pointer_emulation = false; server->options.no_touch_pointer_emulation = false;
#endif #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; argv[i++] = NULL;
assert(i < sizeof(argv) / sizeof(argv[0])); assert(i < sizeof(argv) / sizeof(argv[0]));