From 36b614dedf4ddc428e43ad1542d4f9314f73f60a Mon Sep 17 00:00:00 2001 From: Eoghan Sherry Date: Sun, 28 Nov 2010 16:15:51 -0500 Subject: Xi: Fix master button update when slave buttons are mapped. #24887 It is currently assumed that an event button delieved to a master device corresponds to the slave button states. However, the event button is a logical (mapped) slave button and slave button states correspond to physical (unmapped) slave buttons. This leads to incorrect update of the master button state and incorrect events devlivered to clients. Fix the situation by taking the slave button map into account when querying a slave button state. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=24887 Signed-off-by: Eoghan Sherry Signed-off-by: Peter Hutterer --- Xi/exevents.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Xi') diff --git a/Xi/exevents.c b/Xi/exevents.c index d57265ede..8615fd456 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -870,8 +870,10 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event) continue; if (!sd->button) continue; - if (button_is_down(sd, key, BUTTON_PROCESSED)) - return DONT_PROCESS; + for (i = 1; i <= sd->button->numButtons; i++) + if (sd->button->map[i] == key && + button_is_down(sd, i, BUTTON_PROCESSED)) + return DONT_PROCESS; } } set_button_up(device, key, BUTTON_PROCESSED); -- cgit v1.2.3