Drop seat events
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 15 Jan 2014 06:31:29 +0000 (16:31 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Fri, 17 Jan 2014 08:17:11 +0000 (18:17 +1000)
commit5b5b6bca06562a3f558d8d582fbc90129f1f5d17
tree2c0fedb282108efb7f360cc6da419f5460732e1d
parent06453ba7a533b919460d78de0edf1cd980bc638a
Drop seat events

seats are more a compositor concept than a concept of the input library. All
devices in a libinput context are associated with the seat given on creation
of the seat (maps to ID_SEAT in udev for the udev backend).

A logical seat may be assigned to a device (e.g. WL_SEAT) but this does not
necessarily map to the creation of the seat in the compositor.
Drop the seat events but keep seat objects around so that the caller can still
identify which seat a device belongs to.

If the libinput_seat_unref() in the udev backend destroys the seat, the device
list of that seat is invalid and we'd be accessing already freed bytes. To
avoid this, ref the seat before the device removal loop, then unref it once
we're done - that unref then may trigger the actual removal of the seat.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/libinput-private.h
src/libinput.c
src/libinput.h
src/path.c
src/udev-seat.c
test/path.c
test/udev.c