Xi: Fix modifier swapping in XIPassiveGrabDevice
XIPassiveGrabDevice uses a list of uint32_t as modifier sets. The ModifierInfo struct represents the current modifier states and is therefor used in XIQueryPointer and various events. Signed-off-by: Daniel Martin <consume.noise@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
aa9da5eae1
commit
aa9a9ad08b
|
@ -50,7 +50,7 @@ int
|
||||||
SProcXIPassiveGrabDevice(ClientPtr client)
|
SProcXIPassiveGrabDevice(ClientPtr client)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
xXIModifierInfo *mods;
|
uint32_t *mods;
|
||||||
|
|
||||||
REQUEST(xXIPassiveGrabDeviceReq);
|
REQUEST(xXIPassiveGrabDeviceReq);
|
||||||
|
|
||||||
|
@ -63,12 +63,10 @@ SProcXIPassiveGrabDevice(ClientPtr client)
|
||||||
swaps(&stuff->mask_len);
|
swaps(&stuff->mask_len);
|
||||||
swaps(&stuff->num_modifiers);
|
swaps(&stuff->num_modifiers);
|
||||||
|
|
||||||
mods = (xXIModifierInfo *) &stuff[1];
|
mods = (uint32_t *) &stuff[1];
|
||||||
|
|
||||||
for (i = 0; i < stuff->num_modifiers; i++, mods++) {
|
for (i = 0; i < stuff->num_modifiers; i++, mods++) {
|
||||||
swapl(&mods->base_mods);
|
swapl(mods);
|
||||||
swapl(&mods->latched_mods);
|
|
||||||
swapl(&mods->locked_mods);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ProcXIPassiveGrabDevice(client);
|
return ProcXIPassiveGrabDevice(client);
|
||||||
|
|
Loading…
Reference in New Issue