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 <ejsherry@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Eoghan Sherry 2010-11-28 16:15:51 -05:00 committed by Peter Hutterer
parent 31ab9f8860
commit 36b614dedf

View File

@ -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);