From 1e37d3bc44294c01db3370a5fa4068211d4f53e3 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 30 Jan 2014 15:55:37 +1000 Subject: [PATCH] evdev: prevent double-suspending a device Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede --- src/evdev.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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; } -- 2.34.1