From a09ec59764d62033ea73feb292f503ee3627d987 Mon Sep 17 00:00:00 2001 From: Sungjin Park Date: Tue, 25 Apr 2023 20:38:25 +0900 Subject: [PATCH] e_input_evdev: modified to send pointer relative motion event when required Change-Id: I15850efd519d0481ad260b836d08ec844e9d00ab Signed-off-by: Sungjin Park --- src/bin/e_input_evdev.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/bin/e_input_evdev.c b/src/bin/e_input_evdev.c index e91cb85..69c172a 100644 --- a/src/bin/e_input_evdev.c +++ b/src/bin/e_input_evdev.c @@ -772,9 +772,18 @@ _e_input_pointer_motion_post(E_Input_Evdev *edev) } static void +_device_pointer_relative_motion_send(double dx[2], double dy[2], uint64_t time_us) +{ + e_input_relative_motion_cb func = e_input_relative_motion_handler_get(); + if (func) func(dx, dy, time_us); +} + +static void _device_handle_pointer_motion(struct libinput_device *device, struct libinput_event_pointer *event) { E_Input_Evdev *edev; + double delta_x[2]; /* delta_x[0] for accelerated, delta_x[1] for unaccelerated */ + double delta_y[2]; /* delta_y[0] for accelerated, delta_y[1] for unaccelerated */ double dx, dy, temp; if (!(edev = libinput_device_get_user_data(device))) @@ -782,15 +791,20 @@ _device_handle_pointer_motion(struct libinput_device *device, struct libinput_ev return; } + delta_x[0] = libinput_event_pointer_get_dx(event); + delta_x[1] = libinput_event_pointer_get_dx_unaccelerated(event); + delta_y[0] = libinput_event_pointer_get_dy(event); + delta_y[1] = libinput_event_pointer_get_dy_unaccelerated(event); + if (edev->disable_acceleration) { - dx = libinput_event_pointer_get_dx_unaccelerated(event); - dy = libinput_event_pointer_get_dy_unaccelerated(event); + dx = delta_x[1]; + dy = delta_y[1]; } else { - dx = libinput_event_pointer_get_dx(event); - dy = libinput_event_pointer_get_dy(event); + dx = delta_x[0]; + dy = delta_y[0]; } if (edev->seat->ptr.swap) @@ -825,6 +839,8 @@ _device_handle_pointer_motion(struct libinput_device *device, struct libinput_ev return; } + _device_pointer_relative_motion_send(&delta_x[0], &delta_y[0], + libinput_event_pointer_get_time_usec(event)); _device_pointer_motion(edev, event); } -- 2.7.4