diff --git a/Xi/extinit.c b/Xi/extinit.c index ff4b9343a..bcc82034f 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -392,7 +392,7 @@ SProcIDispatch(ClientPtr client) case X_GetDeviceFocus: return ProcXGetDeviceFocus(client); case X_SetDeviceFocus: - return SProcXSetDeviceFocus(client); + return ProcXSetDeviceFocus(client); case X_GetFeedbackControl: return ProcXGetFeedbackControl(client); case X_ChangeFeedbackControl: diff --git a/Xi/handlers.h b/Xi/handlers.h index 96211ea82..0b29bcc4f 100644 --- a/Xi/handlers.h +++ b/Xi/handlers.h @@ -81,7 +81,6 @@ int SProcXIQueryVersion(ClientPtr client); int SProcXISelectEvents(ClientPtr client); int SProcXISetClientPointer(ClientPtr client); int SProcXIWarpPointer(ClientPtr client); -int SProcXSetDeviceFocus(ClientPtr client); int SProcXUngrabDeviceButton(ClientPtr client); int SProcXUngrabDeviceKey(ClientPtr client); diff --git a/Xi/setfocus.c b/Xi/setfocus.c index 3b82ddb30..f1d61f8d8 100644 --- a/Xi/setfocus.c +++ b/Xi/setfocus.c @@ -63,22 +63,6 @@ SOFTWARE. #include "exglobals.h" -/*********************************************************************** - * - * This procedure sets the focus for a device. - * - */ - -int _X_COLD -SProcXSetDeviceFocus(ClientPtr client) -{ - REQUEST(xSetDeviceFocusReq); - REQUEST_SIZE_MATCH(xSetDeviceFocusReq); - swapl(&stuff->focus); - swapl(&stuff->time); - return (ProcXSetDeviceFocus(client)); -} - /*********************************************************************** * * This procedure sets the focus for a device. @@ -88,12 +72,17 @@ SProcXSetDeviceFocus(ClientPtr client) int ProcXSetDeviceFocus(ClientPtr client) { - int ret; - DeviceIntPtr dev; - REQUEST(xSetDeviceFocusReq); REQUEST_SIZE_MATCH(xSetDeviceFocusReq); + if (client->swapped) { + swapl(&stuff->focus); + swapl(&stuff->time); + } + + int ret; + DeviceIntPtr dev; + ret = dixLookupDevice(&dev, stuff->device, client, DixSetFocusAccess); if (ret != Success) return ret;