diff --git a/src/evdev.c b/src/evdev.c index 054beb63..9e91ee5b 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -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; }