diff --git a/Xi/extinit.c b/Xi/extinit.c index c9f3003d01..2ef70fc3f9 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -386,7 +386,7 @@ SProcIDispatch(ClientPtr client) case X_GrabDeviceButton: return ProcXGrabDeviceButton(client); case X_UngrabDeviceButton: - return SProcXUngrabDeviceButton(client); + return ProcXUngrabDeviceButton(client); case X_AllowDeviceEvents: return ProcXAllowDeviceEvents(client); case X_GetDeviceFocus: diff --git a/Xi/handlers.h b/Xi/handlers.h index c7b8babe18..cb386eaefc 100644 --- a/Xi/handlers.h +++ b/Xi/handlers.h @@ -79,7 +79,6 @@ int SProcXIQueryVersion(ClientPtr client); int SProcXISelectEvents(ClientPtr client); int SProcXISetClientPointer(ClientPtr client); int SProcXIWarpPointer(ClientPtr client); -int SProcXUngrabDeviceButton(ClientPtr client); int SProcXUngrabDeviceKey(ClientPtr client); #endif /* _XSERVER_XI_HANDLERS_H */ diff --git a/Xi/ungrdevb.c b/Xi/ungrdevb.c index cc95754d9c..16ce50bb70 100644 --- a/Xi/ungrdevb.c +++ b/Xi/ungrdevb.c @@ -67,22 +67,6 @@ SOFTWARE. ShiftMask | LockMask | ControlMask | Mod1Mask | Mod2Mask | \ Mod3Mask | Mod4Mask | Mod5Mask ) -/*********************************************************************** - * - * Handle requests from a client with a different byte order. - * - */ - -int _X_COLD -SProcXUngrabDeviceButton(ClientPtr client) -{ - REQUEST(xUngrabDeviceButtonReq); - REQUEST_SIZE_MATCH(xUngrabDeviceButtonReq); - swapl(&stuff->grabWindow); - swaps(&stuff->modifiers); - return (ProcXUngrabDeviceButton(client)); -} - /*********************************************************************** * * Release a grab of a button on an extension device. @@ -92,15 +76,20 @@ SProcXUngrabDeviceButton(ClientPtr client) int ProcXUngrabDeviceButton(ClientPtr client) { + REQUEST(xUngrabDeviceButtonReq); + REQUEST_SIZE_MATCH(xUngrabDeviceButtonReq); + + if (client->swapped) { + swapl(&stuff->grabWindow); + swaps(&stuff->modifiers); + } + DeviceIntPtr dev; DeviceIntPtr mdev; WindowPtr pWin; GrabPtr temporaryGrab; int rc; - REQUEST(xUngrabDeviceButtonReq); - REQUEST_SIZE_MATCH(xUngrabDeviceButtonReq); - rc = dixLookupDevice(&dev, stuff->grabbed_device, client, DixGrabAccess); if (rc != Success) return rc;