xwayland: add support for -noTouchPointerEmulation

This allows compositors to handle touch pointer emulation manually,
instead of having Xwayland do it [1].

[1]: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/691
master
Simon Ser 3 years ago
parent 760e166578
commit 3e801d68f2

@ -22,6 +22,7 @@ struct wlr_xwayland_cursor;
struct wlr_xwayland_server_options { struct wlr_xwayland_server_options {
bool lazy; bool lazy;
bool enable_wm; bool enable_wm;
bool no_touch_pointer_emulation;
}; };
struct wlr_xwayland_server { struct wlr_xwayland_server {

@ -1,7 +1,11 @@
have_listenfd = false have_listenfd = false
have_no_touch_pointer_emulation = false
if xwayland.found() if xwayland.found()
xwayland_path = xwayland.get_variable('xwayland') xwayland_path = xwayland.get_variable('xwayland')
have_listenfd = xwayland.get_variable('have_listenfd') == 'true' have_listenfd = xwayland.get_variable('have_listenfd',
default_value: 'false') == 'true'
have_no_touch_pointer_emulation = xwayland.get_variable(
'have_no_touch_pointer_emulation', default_value: 'false') == 'true'
else else
xwayland_path = xwayland_prog.full_path() xwayland_path = xwayland_prog.full_path()
endif endif
@ -9,6 +13,7 @@ endif
xwayland_config_data = configuration_data() 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)
configure_file( configure_file(
output: 'config.h', output: 'config.h',
configuration: xwayland_config_data, configuration: xwayland_config_data,

@ -73,6 +73,14 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server) {
argv[i++] = wmfd; argv[i++] = wmfd;
} }
#if HAVE_XWAYLAND_NO_TOUCH_POINTER_EMULATION
if (server->options.no_touch_pointer_emulation) {
argv[i++] = "-noTouchPointerEmulation";
}
#else
server->options.no_touch_pointer_emulation = false;
#endif
argv[i++] = NULL; argv[i++] = NULL;
assert(i < sizeof(argv) / sizeof(argv[0])); assert(i < sizeof(argv) / sizeof(argv[0]));

Loading…
Cancel
Save