evdev: prevent double-suspending a device

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
Peter Hutterer 2014-01-30 15:55:37 +10:00
parent 702e8db2cf
commit 1e37d3bc44

View file

@ -1168,16 +1168,23 @@ release_pressed_keys(struct evdev_device *device)
int
evdev_device_suspend(struct evdev_device *device)
{
if (device->source)
if (device->source) {
libinput_remove_source(device->base.seat->libinput,
device->source);
device->source = NULL;
}
release_pressed_keys(device);
if (device->mtdev)
if (device->mtdev) {
mtdev_close_delete(device->mtdev);
close_restricted(device->base.seat->libinput, device->fd);
device->fd = -1;
device->mtdev = NULL;
}
if (device->fd != -1) {
close_restricted(device->base.seat->libinput, device->fd);
device->fd = -1;
}
return 0;
}