On Mon, Feb 24, 2014 at 09:28:49AM +1000, Peter Hutterer wrote: > On Sat, Feb 22, 2014 at 03:51:57PM +0100, Jonas Ådahl wrote: > > On Tue, Feb 18, 2014 at 04:09:09PM +1000, Peter Hutterer wrote: > > > libevdev wraps the various peculiarities of the evdev kernel API into a > > > type-safe API. It also buffers the device so checking for specific > > > features at > > > a later time is easier than re-issuing the ioctls. Plus, it gives us > > > almost > > > free support for SYN_DROPPED events (in the following patch). > > > > > > This patch switches all the bit checks over to libevdev and leaves the > > > event > > > processing as-is. Makes it easier to review. > > > > > > Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> > > > > Looks good to me as well, with one comment inline. > > > > Reviewed-by: Jonas Ådahl <jad...@gmail.com> > > ... > > > > @@ -624,6 +607,10 @@ evdev_device_create(struct libinput_seat *seat, > > > > > > libinput_device_init(&device->base, seat); > > > > > > + rc = libevdev_new_from_fd(fd, &device->evdev); > > > + if (rc != 0) > > > + return NULL; > > > + > > > device->seat_caps = 0; > > > device->is_mt = 0; > > > device->mtdev = NULL; > > > @@ -635,10 +622,7 @@ evdev_device_create(struct libinput_seat *seat, > > > device->dispatch = NULL; > > > device->fd = fd; > > > device->pending_event = EVDEV_NONE; > > > - > > > - ioctl(device->fd, EVIOCGNAME(sizeof(devname)), devname); > > > - devname[sizeof(devname) - 1] = '\0'; > > > - device->devname = strdup(devname); > > > + device->devname = libevdev_get_name(device->evdev); > > > > This makes the assumption that the const char * returned by > > libevdev_get_name() is valid until we destroy the device. Is this > > guaranteed anywhere by libevdev? > > It's guaranteed by the kernel. There is no facility to set the name through > the API and there is no facility to notify the caller if the name would > change. so libevdev (which has a copy, obviuosly) wouldn't know that it > changed. libevdev_change_fd() doesn't re-sync the name, so yes, this name > is constant. I should've been more precise here: there is no facility to set the name through the _kernel_ API. libevdev enables a caller to change the name (and thus free the string) though I'm strongly inclined to say that's a caller problem that we don't need to worry about.
I'll add some extra notes to the libevdev documentation here. Cheers, Peter _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel