From: John Lindgren Date: Sat, 6 Dec 2025 17:49:09 +0000 (-0500) Subject: cursor: don't synthesize relative motion events from absolute events X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=2f37002498ecc53ae0ae3c70a37c9a828333a8d7;p=proto%2Flabwc.git cursor: don't synthesize relative motion events from absolute events It seems to have been inherited behavior from tinywl, but it's not clear what purpose it serves, and it causes a couple of issues: - A new absolute position that's discontinuous with the previous cursor position can produce unexpectedly large relative motion deltas. This can occur for example when multiple input devices are active, or in nested/VM scenarios when the pointer leaves the windowed output and re-enters at a different point. - When the cursor position is locked via constraint, the computed deltas continue to get larger as the absolute event position diverges further from the locked position. This led to the mouse pointer going crazy in applications that use the relative events, such as games under Wine/ Wayland. --- diff --git a/src/input/cursor.c b/src/input/cursor.c index 86297c9a..29409bea 100644 --- a/src/input/cursor.c +++ b/src/input/cursor.c @@ -985,11 +985,6 @@ handle_motion_absolute(struct wl_listener *listener, void *data) double dx = lx - seat->cursor->x; double dy = ly - seat->cursor->y; - wlr_relative_pointer_manager_v1_send_relative_motion( - seat->server->relative_pointer_manager, - seat->seat, (uint64_t)event->time_msec * 1000, - dx, dy, dx, dy); - preprocess_cursor_motion(seat, event->pointer, event->time_msec, dx, dy); }