Blame SOURCES/0001-dix-fix-button-state-check-before-changing-a-button-.patch

d64d53
From 25d10464f440b8b34594b7c988a99a830ea39a29 Mon Sep 17 00:00:00 2001
d64d53
From: Peter Hutterer <peter.hutterer@who-t.net>
d64d53
Date: Fri, 24 Jan 2014 18:16:54 +1000
d64d53
Subject: [PATCH] dix: fix button state check before changing a button mapping
d64d53
d64d53
dev->button->down is a bitmask, not a normal array. Use the helper function to
d64d53
check, we technically allow the mapping to change after the physical button
d64d53
has been pressed (but not yet processed yet), so only check BUTTON_PROCESSED.
d64d53
d64d53
From XSetPointerMapping(3):
d64d53
"If any of the buttons to be altered are logically in the down state,
d64d53
XSetPointerMapping returns MappingBusy, and the mapping is not changed."
d64d53
d64d53
Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
d64d53
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
d64d53
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
d64d53
---
d64d53
 dix/inpututils.c | 3 ++-
d64d53
 1 file changed, 2 insertions(+), 1 deletion(-)
d64d53
d64d53
diff --git a/dix/inpututils.c b/dix/inpututils.c
d64d53
index a10a7c7..e5bcc31 100644
d64d53
--- a/dix/inpututils.c
d64d53
+++ b/dix/inpututils.c
d64d53
@@ -60,7 +60,8 @@ check_butmap_change(DeviceIntPtr dev, CARD8 *map, int len, CARD32 *errval_out,
d64d53
     }
d64d53
 
d64d53
     for (i = 0; i < len; i++) {
d64d53
-        if (dev->button->map[i + 1] != map[i] && dev->button->down[i + 1])
d64d53
+        if (dev->button->map[i + 1] != map[i] &&
d64d53
+            button_is_down(dev, i + 1, BUTTON_PROCESSED))
d64d53
             return MappingBusy;
d64d53
     }
d64d53
 
d64d53
-- 
d64d53
1.8.4.2
d64d53