From ff1dc32efe0c4ba5bde5b6b2d71b030cf23c0af1 Mon Sep 17 00:00:00 2001 From: Quantum Date: Sun, 17 Jan 2021 23:13:19 -0500 Subject: [PATCH] [client] spice/wayland: fix capture mode relative movement It appears that Wayland pointer motion handlers are called even when relative mouse mode is enabled. The events they generate break first-person games. This commit disables those handlers when relative mouse is enabled. --- client/displayservers/Wayland/wayland.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/displayservers/Wayland/wayland.c b/client/displayservers/Wayland/wayland.c index 9618484d..e2b1c852 100644 --- a/client/displayservers/Wayland/wayland.c +++ b/client/displayservers/Wayland/wayland.c @@ -123,6 +123,9 @@ static const struct wl_registry_listener registryListener = { static void pointerMotionHandler(void * data, struct wl_pointer * pointer, uint32_t serial, wl_fixed_t sxW, wl_fixed_t syW) { + if (wm.relativePointer) + return; + int sx = wl_fixed_to_int(sxW); int sy = wl_fixed_to_int(syW); app_updateCursorPos(sx, sy); @@ -133,6 +136,9 @@ static void pointerEnterHandler(void * data, struct wl_pointer * pointer, uint32_t serial, struct wl_surface * surface, wl_fixed_t sxW, wl_fixed_t syW) { + if (wm.relativePointer) + return; + int sx = wl_fixed_to_int(sxW); int sy = wl_fixed_to_int(syW); app_updateCursorPos(sx, sy);