diff --git a/Xi/extinit.c b/Xi/extinit.c index ce520794a..e37197e40 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -362,7 +362,7 @@ SProcIDispatch(ClientPtr client) case X_SetDeviceMode: return ProcXSetDeviceMode(client); case X_SelectExtensionEvent: - return SProcXSelectExtensionEvent(client); + return ProcXSelectExtensionEvent(client); case X_GetSelectedExtensionEvents: return SProcXGetSelectedExtensionEvents(client); case X_ChangeDeviceDontPropagateList: diff --git a/Xi/handlers.h b/Xi/handlers.h index fe0a6c400..6c084989e 100644 --- a/Xi/handlers.h +++ b/Xi/handlers.h @@ -93,7 +93,6 @@ int SProcXISelectEvents(ClientPtr client); int SProcXISetClientPointer(ClientPtr client); int SProcXISetFocus(ClientPtr client); int SProcXIWarpPointer(ClientPtr client); -int SProcXSelectExtensionEvent(ClientPtr client); int SProcXSendExtensionEvent(ClientPtr client); int SProcXSetDeviceFocus(ClientPtr client); int SProcXUngrabDeviceButton(ClientPtr client); diff --git a/Xi/selectev.c b/Xi/selectev.c index a1e2ce024..6d99b08a3 100644 --- a/Xi/selectev.c +++ b/Xi/selectev.c @@ -111,25 +111,6 @@ HandleDevicePresenceMask(ClientPtr client, WindowPtr win, return Success; } -/*********************************************************************** - * - * Handle requests from clients with a different byte order. - * - */ - -int _X_COLD -SProcXSelectExtensionEvent(ClientPtr client) -{ - REQUEST(xSelectExtensionEventReq); - REQUEST_AT_LEAST_SIZE(xSelectExtensionEventReq); - swapl(&stuff->window); - swaps(&stuff->count); - REQUEST_FIXED_SIZE(xSelectExtensionEventReq, stuff->count * sizeof(CARD32)); - SwapLongs((CARD32 *) (&stuff[1]), stuff->count); - - return (ProcXSelectExtensionEvent(client)); -} - /*********************************************************************** * * This procedure selects input from an extension device. @@ -139,18 +120,24 @@ SProcXSelectExtensionEvent(ClientPtr client) int ProcXSelectExtensionEvent(ClientPtr client) { + REQUEST(xSelectExtensionEventReq); + REQUEST_AT_LEAST_SIZE(xSelectExtensionEventReq); + + if (client->swapped) { + swapl(&stuff->window); + swaps(&stuff->count); + } + + REQUEST_FIXED_SIZE(xSelectExtensionEventReq, stuff->count * sizeof(CARD32)); + + if (client->swapped) + SwapLongs((CARD32 *) (&stuff[1]), stuff->count); + int ret; int i; WindowPtr pWin; struct tmask tmp[EMASKSIZE]; - REQUEST(xSelectExtensionEventReq); - REQUEST_AT_LEAST_SIZE(xSelectExtensionEventReq); - - if (client->req_len != - bytes_to_int32(sizeof(xSelectExtensionEventReq)) + stuff->count) - return BadLength; - ret = dixLookupWindow(&pWin, stuff->window, client, DixReceiveAccess); if (ret != Success) return ret;