test: make litest robust for ABS_MT_POSITION_X-only devices
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 27 Sep 2018 05:07:53 +0000 (15:07 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 13 Feb 2019 08:45:04 +0000 (18:45 +1000)
The Dell Canvas Totem only has the MT axes but not the single touch ones. Make
sure we copy the axis extents correctly.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
test/litest.c

index 94702d4e54ae5323b247c863f74cfedc4b6857da..7c988f494f51c6962b9ad8e05685e47261377503 100644 (file)
@@ -1466,10 +1466,23 @@ litest_add_device_with_overrides(struct libinput *libinput,
        libinput_device_ref(d->libinput_device);
 
        if (d->interface) {
-               d->interface->min[ABS_X] = libevdev_get_abs_minimum(d->evdev, ABS_X);
-               d->interface->max[ABS_X] = libevdev_get_abs_maximum(d->evdev, ABS_X);
-               d->interface->min[ABS_Y] = libevdev_get_abs_minimum(d->evdev, ABS_Y);
-               d->interface->max[ABS_Y] = libevdev_get_abs_maximum(d->evdev, ABS_Y);
+               unsigned int code;
+
+               code = ABS_X;
+               if (!libevdev_has_event_code(d->evdev, EV_ABS, code))
+                       code = ABS_MT_POSITION_X;
+               if (libevdev_has_event_code(d->evdev, EV_ABS, code)) {
+                       d->interface->min[ABS_X] = libevdev_get_abs_minimum(d->evdev, code);
+                       d->interface->max[ABS_X] = libevdev_get_abs_maximum(d->evdev, code);
+               }
+
+               code = ABS_Y;
+               if (!libevdev_has_event_code(d->evdev, EV_ABS, code))
+                       code = ABS_MT_POSITION_Y;
+               if (libevdev_has_event_code(d->evdev, EV_ABS, code)) {
+                       d->interface->min[ABS_Y] = libevdev_get_abs_minimum(d->evdev, code);
+                       d->interface->max[ABS_Y] = libevdev_get_abs_maximum(d->evdev, code);
+               }
        }
        return d;
 }