e_input_evdev: modified to send pointer relative motion event when required 47/294947/1
authorSungjin Park <sj76.park@samsung.com>
Tue, 25 Apr 2023 11:38:25 +0000 (20:38 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 29 Jun 2023 05:11:38 +0000 (14:11 +0900)
Change-Id: I15850efd519d0481ad260b836d08ec844e9d00ab
Signed-off-by: Sungjin Park <sj76.park@samsung.com>
src/bin/e_input_evdev.c

index e91cb85..69c172a 100644 (file)
@@ -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);
 }