diff --git a/Xi/extinit.c b/Xi/extinit.c index 2ef70fc3f9..ad052cb0cc 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -382,7 +382,7 @@ SProcIDispatch(ClientPtr client) case X_GrabDeviceKey: return ProcXGrabDeviceKey(client); case X_UngrabDeviceKey: - return SProcXUngrabDeviceKey(client); + return ProcXUngrabDeviceKey(client); case X_GrabDeviceButton: return ProcXGrabDeviceButton(client); case X_UngrabDeviceButton: diff --git a/Xi/handlers.h b/Xi/handlers.h index cb386eaefc..b1fb641e7c 100644 --- a/Xi/handlers.h +++ b/Xi/handlers.h @@ -79,6 +79,5 @@ int SProcXIQueryVersion(ClientPtr client); int SProcXISelectEvents(ClientPtr client); int SProcXISetClientPointer(ClientPtr client); int SProcXIWarpPointer(ClientPtr client); -int SProcXUngrabDeviceKey(ClientPtr client); #endif /* _XSERVER_XI_HANDLERS_H */ diff --git a/Xi/ungrdevk.c b/Xi/ungrdevk.c index b60e29605e..780c47aa37 100644 --- a/Xi/ungrdevk.c +++ b/Xi/ungrdevk.c @@ -69,22 +69,6 @@ SOFTWARE. ShiftMask | LockMask | ControlMask | Mod1Mask | Mod2Mask | \ Mod3Mask | Mod4Mask | Mod5Mask ) -/*********************************************************************** - * - * Handle requests from a client with a different byte order. - * - */ - -int _X_COLD -SProcXUngrabDeviceKey(ClientPtr client) -{ - REQUEST(xUngrabDeviceKeyReq); - REQUEST_SIZE_MATCH(xUngrabDeviceKeyReq); - swapl(&stuff->grabWindow); - swaps(&stuff->modifiers); - return (ProcXUngrabDeviceKey(client)); -} - /*********************************************************************** * * Release a grab of a key on an extension device. @@ -94,15 +78,20 @@ SProcXUngrabDeviceKey(ClientPtr client) int ProcXUngrabDeviceKey(ClientPtr client) { + REQUEST(xUngrabDeviceKeyReq); + REQUEST_SIZE_MATCH(xUngrabDeviceKeyReq); + + if (client->swapped) { + swapl(&stuff->grabWindow); + swaps(&stuff->modifiers); + } + DeviceIntPtr dev; DeviceIntPtr mdev; WindowPtr pWin; GrabPtr temporaryGrab; int rc; - REQUEST(xUngrabDeviceKeyReq); - REQUEST_SIZE_MATCH(xUngrabDeviceKeyReq); - rc = dixLookupDevice(&dev, stuff->grabbed_device, client, DixGrabAccess); if (rc != Success) return rc;