From f3410b97cf9b48a47bee3d15d232f8a88e75f4ef Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 30 Apr 2012 10:01:48 +1000 Subject: [PATCH] dix: when disabling a device, release all buttons and keys A suspend-induced device disable may happen before the device gets to see the button release event. On resume, the server's internal state still has some buttons pressed, causing inconsistent behaviour. Force the release and the matching events to be sent to the client. Signed-off-by: Peter Hutterer Reviewed-by: Chase Douglas --- dix/devices.c | 1 + 1 file changed, 1 insertion(+) diff --git a/dix/devices.c b/dix/devices.c index 600f8b738..7f3886507 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -437,6 +437,7 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent) if (*prev != dev) return FALSE; + ReleaseButtonsAndKeys(dev); SyncRemoveDeviceIdleTime(dev->idle_counter); dev->idle_counter = NULL;