On 27/04/15 12:52 AM, Peter Hutterer wrote: > Some devices provide abs x/y and rel x/y. We can't know which event the device > will send. The Microsoft Surface Type Cover sends relative devices, which
It probably sends events, not devices. :) This whole series looks correct to me (though the use of "either" to mean exclusive or in 6/8 caught me out momentarily) Reviewed-By: Derek Foreman <der...@osg.samsung.com> > then crashes libinput when we don't have an accel filter set up. > > So instead of checking that the device doesn't have ABS_X/Y, check for the > device to have REL_X/Y instead. > > https://bugzilla.redhat.com/show_bug.cgi?id=1206869 > > Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> > --- > src/evdev.c | 4 ++-- > test/pointer.c | 14 +++++++++++++- > 2 files changed, 15 insertions(+), 3 deletions(-) > > diff --git a/src/evdev.c b/src/evdev.c > index db19ac8..d65b113 100644 > --- a/src/evdev.c > +++ b/src/evdev.c > @@ -1792,8 +1792,8 @@ evdev_configure_device(struct evdev_device *device) > } > > if (udev_tags & EVDEV_UDEV_TAG_MOUSE) { > - if (!libevdev_has_event_code(evdev, EV_ABS, ABS_X) && > - !libevdev_has_event_code(evdev, EV_ABS, ABS_Y) && > + if (libevdev_has_event_code(evdev, EV_REL, REL_X) && > + libevdev_has_event_code(evdev, EV_REL, REL_Y) && > > evdev_device_init_pointer_acceleration( > device, > pointer_accel_profile_linear) == -1) > diff --git a/test/pointer.c b/test/pointer.c > index 01ea2fd..9d3dda6 100644 > --- a/test/pointer.c > +++ b/test/pointer.c > @@ -825,6 +825,17 @@ START_TEST(pointer_accel_defaults_absolute) > } > END_TEST > > +START_TEST(pointer_accel_defaults_absolute_relative) > +{ > + struct litest_device *dev = litest_current_device(); > + struct libinput_device *device = dev->libinput_device; > + > + ck_assert(libinput_device_config_accel_is_available(device)); > + ck_assert(libinput_device_config_accel_get_default_speed(device) == > 0.0); > + ck_assert(libinput_device_config_accel_get_speed(device) == 0.0); > +} > +END_TEST > + > START_TEST(pointer_accel_direction_change) > { > struct litest_device *dev = litest_current_device(); > @@ -1223,7 +1234,8 @@ int main (int argc, char **argv) { > > litest_add("pointer:accel", pointer_accel_defaults, LITEST_RELATIVE, > LITEST_ANY); > litest_add("pointer:accel", pointer_accel_invalid, LITEST_RELATIVE, > LITEST_ANY); > - litest_add("pointer:accel", pointer_accel_defaults_absolute, > LITEST_ABSOLUTE, LITEST_ANY); > + litest_add("pointer:accel", pointer_accel_defaults_absolute, > LITEST_ABSOLUTE, LITEST_RELATIVE); > + litest_add("pointer:accel", pointer_accel_defaults_absolute_relative, > LITEST_ABSOLUTE|LITEST_RELATIVE, LITEST_ANY); > litest_add("pointer:accel", pointer_accel_direction_change, > LITEST_RELATIVE, LITEST_ANY); > > litest_add("pointer:middlebutton", middlebutton, LITEST_BUTTON, > LITEST_POINTINGSTICK); > _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel