mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-25 18:40:05 +01:00
touchpad: Enable timestamp smoothing support for bluetooth touchpads
Bluetooth wreaks havoc with the timestamp of the input events coming from the touchpad, enable timestamp smoothing support to counter this. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
6f39a9e1c2
commit
c4857f01d8
4 changed files with 12 additions and 4 deletions
|
|
@ -2228,8 +2228,10 @@ tp_init_accel(struct tp_dispatch *tp)
|
|||
if (tp->device->model_flags & EVDEV_MODEL_LENOVO_X230 ||
|
||||
tp->device->model_flags & EVDEV_MODEL_LENOVO_X220_TOUCHPAD_FW81)
|
||||
filter = create_pointer_accelerator_filter_lenovo_x230(tp->device->dpi);
|
||||
else if (libevdev_get_id_bustype(device->evdev) == BUS_BLUETOOTH)
|
||||
filter = create_pointer_accelerator_filter_touchpad(device->dpi, ms2us(50), ms2us(10));
|
||||
else
|
||||
filter = create_pointer_accelerator_filter_touchpad(tp->device->dpi);
|
||||
filter = create_pointer_accelerator_filter_touchpad(device->dpi, 0, 0);
|
||||
|
||||
if (!filter)
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -1013,7 +1013,9 @@ struct motion_filter_interface accelerator_interface_touchpad = {
|
|||
};
|
||||
|
||||
struct motion_filter *
|
||||
create_pointer_accelerator_filter_touchpad(int dpi)
|
||||
create_pointer_accelerator_filter_touchpad(int dpi,
|
||||
uint64_t event_delta_smooth_threshold,
|
||||
uint64_t event_delta_smooth_value)
|
||||
{
|
||||
struct pointer_accelerator *filter;
|
||||
|
||||
|
|
@ -1023,6 +1025,8 @@ create_pointer_accelerator_filter_touchpad(int dpi)
|
|||
|
||||
filter->base.interface = &accelerator_interface_touchpad;
|
||||
filter->profile = touchpad_accel_profile_linear;
|
||||
filter->event_delta_smooth_threshold = event_delta_smooth_threshold;
|
||||
filter->event_delta_smooth_value = event_delta_smooth_value;
|
||||
|
||||
return &filter->base;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,7 +114,9 @@ struct motion_filter *
|
|||
create_pointer_accelerator_filter_linear_low_dpi(int dpi);
|
||||
|
||||
struct motion_filter *
|
||||
create_pointer_accelerator_filter_touchpad(int dpi);
|
||||
create_pointer_accelerator_filter_touchpad(int dpi,
|
||||
uint64_t event_delta_smooth_threshold,
|
||||
uint64_t event_delta_smooth_value);
|
||||
|
||||
struct motion_filter *
|
||||
create_pointer_accelerator_filter_lenovo_x230(int dpi);
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ main(int argc, char **argv)
|
|||
filter = create_pointer_accelerator_filter_linear_low_dpi(dpi);
|
||||
profile = pointer_accel_profile_linear_low_dpi;
|
||||
} else if (streq(filter_type, "touchpad")) {
|
||||
filter = create_pointer_accelerator_filter_touchpad(dpi);
|
||||
filter = create_pointer_accelerator_filter_touchpad(dpi, 0, 0);
|
||||
profile = touchpad_accel_profile_linear;
|
||||
} else if (streq(filter_type, "x230")) {
|
||||
filter = create_pointer_accelerator_filter_lenovo_x230(dpi);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue