libinput_log_set_handler(libinput, litest_log_handler);
}
+static inline void
+litest_wait_for_udev(int fd)
+{
+ struct udev *udev;
+ struct udev_device *device;
+ struct stat st;
+ int loop_count = 0;
+
+ litest_assert_int_ge(fstat(fd, &st), 0);
+
+ udev = udev_new();
+ device = udev_device_new_from_devnum(udev, 'c', st.st_rdev);
+ litest_assert_ptr_notnull(device);
+ while (device && !udev_device_get_property_value(device, "ID_INPUT")) {
+ loop_count++;
+ litest_assert_int_lt(loop_count, 300);
+
+ udev_device_unref(device);
+ msleep(2);
+ device = udev_device_new_from_devnum(udev, 'c', st.st_rdev);
+ }
+
+ udev_device_unref(device);
+ udev_unref(udev);
+}
+
struct litest_device *
litest_add_device_with_overrides(struct libinput *libinput,
enum litest_device_type which,
rc = libevdev_new_from_fd(fd, &d->evdev);
litest_assert_int_eq(rc, 0);
+ litest_wait_for_udev(fd);
+
d->libinput = libinput;
d->libinput_device = libinput_path_add_device(d->libinput, path);
litest_assert(d->libinput_device != NULL);