}
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)))
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)
return;
}
+ _device_pointer_relative_motion_send(&delta_x[0], &delta_y[0],
+ libinput_event_pointer_get_time_usec(event));
_device_pointer_motion(edev, event);
}