On Fri, Jun 27, 2014 at 01:02:11PM +1000, Peter Hutterer wrote: > Those three are the ones that matter for logging or device identification in > callers, so let's provide them. > > Signed-off-by: Peter Hutterer <[email protected]>
Reviewed-by: Jonas Ã…dahl <[email protected]> with a nit below. Jonas > --- > src/evdev.c | 18 ++++++++++++++++++ > src/evdev.h | 9 +++++++++ > src/libinput.c | 18 ++++++++++++++++++ > src/libinput.h | 34 ++++++++++++++++++++++++++++++++++ > test/misc.c | 20 ++++++++++++++++++++ > 5 files changed, 99 insertions(+) > > diff --git a/src/evdev.c b/src/evdev.c > index f72bd43..183c200 100644 > --- a/src/evdev.c > +++ b/src/evdev.c > @@ -857,6 +857,24 @@ evdev_device_get_sysname(struct evdev_device *device) > return device->sysname; > } > > +const char * > +evdev_device_get_name(struct evdev_device *device) > +{ > + return device->devname; > +} > + > +unsigned int > +evdev_device_get_id_product(struct evdev_device *device) > +{ > + return libevdev_get_id_product(device->evdev); > +} > + > +unsigned int > +evdev_device_get_id_vendor(struct evdev_device *device) > +{ > + return libevdev_get_id_vendor(device->evdev); > +} > + > void > evdev_device_calibrate(struct evdev_device *device, float calibration[6]) > { > diff --git a/src/evdev.h b/src/evdev.h > index 4a83a78..fad1f84 100644 > --- a/src/evdev.h > +++ b/src/evdev.h > @@ -141,6 +141,15 @@ evdev_device_get_output(struct evdev_device *device); > const char * > evdev_device_get_sysname(struct evdev_device *device); > > +const char * > +evdev_device_get_name(struct evdev_device *device); > + > +unsigned int > +evdev_device_get_id_product(struct evdev_device *device); > + > +unsigned int > +evdev_device_get_id_vendor(struct evdev_device *device); > + > void > evdev_device_calibrate(struct evdev_device *device, float calibration[6]); > > diff --git a/src/libinput.c b/src/libinput.c > index 44f4f23..1918b48 100644 > --- a/src/libinput.c > +++ b/src/libinput.c > @@ -1162,6 +1162,24 @@ libinput_device_get_sysname(struct libinput_device > *device) > } > > LIBINPUT_EXPORT const char * > +libinput_device_get_name(struct libinput_device *device) > +{ > + return evdev_device_get_name((struct evdev_device *) device); > +} > + > +LIBINPUT_EXPORT unsigned int > +libinput_device_get_id_product(struct libinput_device *device) > +{ > + return evdev_device_get_id_product((struct evdev_device *) device); > +} > + > +LIBINPUT_EXPORT unsigned int > +libinput_device_get_id_vendor(struct libinput_device *device) > +{ > + return evdev_device_get_id_vendor((struct evdev_device *) device); > +} > + > +LIBINPUT_EXPORT const char * > libinput_device_get_output_name(struct libinput_device *device) > { > return evdev_device_get_output((struct evdev_device *) device); > diff --git a/src/libinput.h b/src/libinput.h > index 99a3b2f..e8b87da 100644 > --- a/src/libinput.h > +++ b/src/libinput.h > @@ -1257,6 +1257,40 @@ libinput_device_get_sysname(struct libinput_device > *device); > /** > * @ingroup device > * Should it maybe be clarified that the name returned is a "descriptive" i.e. not "eventN" like? Also (as its the name from libevdev) that its always non-NULL but may be empty. > + * The lifetime of the returned string is tied to the struct > + * libinput_device. > + * > + * @param device A previously obtained device > + * @return The device name > + */ > +const char * > +libinput_device_get_name(struct libinput_device *device); > + > +/** > + * @ingroup device > + * > + * Get the product ID for this device. > + * > + * @param device A previously obtained device > + * @return The product ID of this device > + */ > +unsigned int > +libinput_device_get_id_product(struct libinput_device *device); > + > +/** > + * @ingroup device > + * > + * Get the vendor ID for this device. > + * > + * @param device A previously obtained device > + * @return The vendor ID of this device > + */ > +unsigned int > +libinput_device_get_id_vendor(struct libinput_device *device); > + > +/** > + * @ingroup device > + * > * A device may be mapped to a single output, or all available outputs. If a > * device is mapped to a single output only, a relative device may not move > * beyond the boundaries of this output. An absolute device has its input > diff --git a/test/misc.c b/test/misc.c > index bea7e88..e467a5c 100644 > --- a/test/misc.c > +++ b/test/misc.c > @@ -390,6 +390,25 @@ START_TEST(context_ref_counting) > } > END_TEST > > +START_TEST(device_ids) > +{ > + struct litest_device *dev = litest_current_device(); > + const char *name; > + int pid, vid; > + > + name = libevdev_get_name(dev->evdev); > + pid = libevdev_get_id_product(dev->evdev); > + vid = libevdev_get_id_vendor(dev->evdev); > + > + ck_assert_str_eq(name, > + libinput_device_get_name(dev->libinput_device)); > + ck_assert_int_eq(pid, > + libinput_device_get_id_product(dev->libinput_device)); > + ck_assert_int_eq(vid, > + libinput_device_get_id_vendor(dev->libinput_device)); > +} > +END_TEST > + > int main (int argc, char **argv) { > litest_add_no_device("events:conversion", > event_conversion_device_notify); > litest_add_no_device("events:conversion", event_conversion_pointer); > @@ -397,6 +416,7 @@ int main (int argc, char **argv) { > litest_add_no_device("events:conversion", event_conversion_key); > litest_add_no_device("events:conversion", event_conversion_touch); > litest_add_no_device("context:refcount", context_ref_counting); > + litest_add("device:id", device_ids, LITEST_ANY, LITEST_ANY); > > return litest_run(argc, argv); > } > -- > 1.9.3 > > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
