diff --git a/xkb/xkb.c b/xkb/xkb.c index 5be1368e1a..8e34fde7b4 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -685,12 +685,15 @@ ProcXkbLatchLockState(ClientPtr client) int ProcXkbGetControls(ClientPtr client) { - XkbControlsPtr xkb; - DeviceIntPtr dev; - REQUEST(xkbGetControlsReq); REQUEST_SIZE_MATCH(xkbGetControlsReq); + if (client->swapped) + swaps(&stuff->deviceSpec); + + XkbControlsPtr xkb; + DeviceIntPtr dev; + if (!(client->xkbClientFlags & _XkbClientInitialized)) return BadAccess; diff --git a/xkb/xkbSwap.c b/xkb/xkbSwap.c index 2de96952cb..cd876b40e2 100644 --- a/xkb/xkbSwap.c +++ b/xkb/xkbSwap.c @@ -162,15 +162,6 @@ SProcXkbLatchLockState(ClientPtr client) return ProcXkbLatchLockState(client); } -static int _X_COLD -SProcXkbGetControls(ClientPtr client) -{ - REQUEST(xkbGetControlsReq); - REQUEST_SIZE_MATCH(xkbGetControlsReq); - swaps(&stuff->deviceSpec); - return ProcXkbGetControls(client); -} - static int _X_COLD SProcXkbSetControls(ClientPtr client) { @@ -336,7 +327,7 @@ SProcXkbDispatch(ClientPtr client) case X_kbLatchLockState: return SProcXkbLatchLockState(client); case X_kbGetControls: - return SProcXkbGetControls(client); + return ProcXkbGetControls(client); case X_kbSetControls: return SProcXkbSetControls(client); case X_kbGetMap: