aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2021-10-22 14:12:49 +0200
committerSimon Ser <contact@emersion.fr>2021-11-02 12:02:51 +0100
commit3e801d68f2c6c64567b1f24c6d03893f32c81197 (patch)
tree82d983f295fc01efc776c6d250a344044d6fade2
parent760e1665789212c49adba8d50632787f49f88c09 (diff)
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
-rw-r--r--include/wlr/xwayland.h1
-rw-r--r--include/xwayland/meson.build7
-rw-r--r--xwayland/server.c8
3 files changed, 15 insertions, 1 deletions
diff --git a/include/wlr/xwayland.h b/include/wlr/xwayland.h
index 3689b8b3..aa9569fe 100644
--- a/include/wlr/xwayland.h
+++ b/include/wlr/xwayland.h
@@ -22,6 +22,7 @@ struct wlr_xwayland_cursor;
struct wlr_xwayland_server_options {
bool lazy;
bool enable_wm;
+ bool no_touch_pointer_emulation;
};
struct wlr_xwayland_server {
diff --git a/include/xwayland/meson.build b/include/xwayland/meson.build
index a92234f1..1dad9259 100644
--- a/include/xwayland/meson.build
+++ b/include/xwayland/meson.build
@@ -1,7 +1,11 @@
have_listenfd = false
+have_no_touch_pointer_emulation = false
if xwayland.found()
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
xwayland_path = xwayland_prog.full_path()
endif
@@ -9,6 +13,7 @@ endif
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)
configure_file(
output: 'config.h',
configuration: xwayland_config_data,
diff --git a/xwayland/server.c b/xwayland/server.c
index 7af01b6f..d8006c44 100644
--- a/xwayland/server.c
+++ b/xwayland/server.c
@@ -73,6 +73,14 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server) {
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;
assert(i < sizeof(argv) / sizeof(argv[0]));