e_input_evdev: modified to send pointer relative motion event when required 11/292011/1
authorSungjin Park <sj76.park@samsung.com>
Tue, 25 Apr 2023 11:38:25 +0000 (20:38 +0900)
committerSungjin Park <sj76.park@samsung.com>
Wed, 26 Apr 2023 07:01:42 +0000 (16:01 +0900)
Change-Id: I15850efd519d0481ad260b836d08ec844e9d00ab
Signed-off-by: Sungjin Park <sj76.park@samsung.com>
src/bin/e_input_evdev.c

index 5b52b0a4da9c45d64074c038adffc05754b8963e..438e7afd0d88b27320b4964f629e02b2516338af 100644 (file)
@@ -771,10 +771,19 @@ _e_input_pointer_motion_post(E_Input_Evdev *edev)
    _device_pointer_motion(edev, NULL);
 }
 
+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);
 }