ei_touch_button and ei_touch_motion don't work for devices with not exactly one region
list_for_each(r, &device->regions, link) {
if (!ei_region_contains(r, x, y)) {
log_bug_client(ei_device_get_context(device),
"%s: touch %u has invalid x/y coordinates", __func__, touch->tracking_id);
ei_touch_up(touch);
return;
}
}
If the device has no regions, the loop is skipped. If the device has more than one non-overlapping region, the loop will certainly fail.