diff --git a/xfixes/cursor.c b/xfixes/cursor.c index bfcd95abb..20bb2e866 100644 --- a/xfixes/cursor.c +++ b/xfixes/cursor.c @@ -298,7 +298,7 @@ SProcXFixesSelectCursorInput(ClientPtr client) swaps(&stuff->length); swapl(&stuff->window); swapl(&stuff->eventMask); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSelectCursorInput(client); } void _X_COLD @@ -415,7 +415,7 @@ SProcXFixesGetCursorImage(ClientPtr client) { REQUEST(xXFixesGetCursorImageReq); swaps(&stuff->length); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesGetCursorImage(client); } int @@ -447,7 +447,7 @@ SProcXFixesSetCursorName(ClientPtr client) REQUEST_AT_LEAST_SIZE(xXFixesSetCursorNameReq); swapl(&stuff->cursor); swaps(&stuff->nbytes); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetCursorName(client); } int @@ -495,7 +495,7 @@ SProcXFixesGetCursorName(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesGetCursorNameReq); swapl(&stuff->cursor); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesGetCursorName(client); } int @@ -572,7 +572,7 @@ SProcXFixesGetCursorImageAndName(ClientPtr client) { REQUEST(xXFixesGetCursorImageAndNameReq); swaps(&stuff->length); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesGetCursorImageAndName(client); } /* @@ -703,7 +703,7 @@ SProcXFixesChangeCursor(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesChangeCursorReq); swapl(&stuff->source); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesChangeCursor(client); } static Bool @@ -742,7 +742,7 @@ SProcXFixesChangeCursorByName(ClientPtr client) REQUEST_AT_LEAST_SIZE(xXFixesChangeCursorByNameReq); swapl(&stuff->source); swaps(&stuff->nbytes); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesChangeCursorByName(client); } /* @@ -900,7 +900,7 @@ SProcXFixesHideCursor(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesHideCursorReq); swapl(&stuff->window); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesHideCursor(client); } int @@ -950,7 +950,7 @@ SProcXFixesShowCursor(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesShowCursorReq); swapl(&stuff->window); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesShowCursor(client); } static int @@ -1037,7 +1037,7 @@ SProcXFixesCreatePointerBarrier(ClientPtr client) swaps(in_devices + i); } - return ProcXFixesVector[stuff->xfixesReqType] (client); + return ProcXFixesCreatePointerBarrier(client); } int @@ -1058,7 +1058,7 @@ SProcXFixesDestroyPointerBarrier(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesDestroyPointerBarrierReq); swapl(&stuff->barrier); - return ProcXFixesVector[stuff->xfixesReqType] (client); + return ProcXFixesDestroyPointerBarrier(client); } Bool diff --git a/xfixes/disconnect.c b/xfixes/disconnect.c index 73aa7cfc8..874d7acce 100644 --- a/xfixes/disconnect.c +++ b/xfixes/disconnect.c @@ -83,7 +83,7 @@ SProcXFixesSetClientDisconnectMode(ClientPtr client) swapl(&stuff->disconnect_mode); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetClientDisconnectMode(client); } int @@ -118,7 +118,7 @@ SProcXFixesGetClientDisconnectMode(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesGetClientDisconnectModeReq); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesGetClientDisconnectMode(client); } Bool diff --git a/xfixes/region.c b/xfixes/region.c index 60278af29..4320ab1cc 100644 --- a/xfixes/region.c +++ b/xfixes/region.c @@ -100,7 +100,7 @@ SProcXFixesCreateRegion(ClientPtr client) REQUEST_AT_LEAST_SIZE(xXFixesCreateRegionReq); swapl(&stuff->region); SwapRestS(stuff); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegion(client); } int @@ -144,7 +144,7 @@ SProcXFixesCreateRegionFromBitmap(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCreateRegionFromBitmapReq); swapl(&stuff->region); swapl(&stuff->bitmap); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegionFromBitmap(client); } int @@ -203,7 +203,7 @@ SProcXFixesCreateRegionFromWindow(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCreateRegionFromWindowReq); swapl(&stuff->region); swapl(&stuff->window); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegionFromWindow(client); } int @@ -246,7 +246,7 @@ SProcXFixesCreateRegionFromGC(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCreateRegionFromGCReq); swapl(&stuff->region); swapl(&stuff->gc); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegionFromGC(client); } int @@ -288,7 +288,7 @@ SProcXFixesCreateRegionFromPicture(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCreateRegionFromPictureReq); swapl(&stuff->region); swapl(&stuff->picture); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegionFromPicture(client); } int @@ -311,7 +311,7 @@ SProcXFixesDestroyRegion(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesDestroyRegionReq); swapl(&stuff->region); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesDestroyRegion(client); } int @@ -350,7 +350,7 @@ SProcXFixesSetRegion(ClientPtr client) REQUEST_AT_LEAST_SIZE(xXFixesSetRegionReq); swapl(&stuff->region); SwapRestS(stuff); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetRegion(client); } int @@ -379,7 +379,7 @@ SProcXFixesCopyRegion(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCopyRegionReq); swapl(&stuff->source); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCopyRegion(client); } int @@ -422,7 +422,7 @@ SProcXFixesCombineRegion(ClientPtr client) swapl(&stuff->source1); swapl(&stuff->source2); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCombineRegion(client); } int @@ -469,7 +469,7 @@ SProcXFixesInvertRegion(ClientPtr client) swaps(&stuff->width); swaps(&stuff->height); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesInvertRegion(client); } int @@ -496,7 +496,7 @@ SProcXFixesTranslateRegion(ClientPtr client) swapl(&stuff->region); swaps(&stuff->dx); swaps(&stuff->dy); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesTranslateRegion(client); } int @@ -524,7 +524,7 @@ SProcXFixesRegionExtents(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesRegionExtentsReq); swapl(&stuff->source); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesRegionExtents(client); } int @@ -588,7 +588,7 @@ SProcXFixesFetchRegion(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesFetchRegionReq); swapl(&stuff->region); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesFetchRegion(client); } static int @@ -650,7 +650,7 @@ SProcXFixesSetGCClipRegion(ClientPtr client) swapl(&stuff->region); swaps(&stuff->xOrigin); swaps(&stuff->yOrigin); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetGCClipRegion(client); } typedef RegionPtr (*CreateDftPtr) (WindowPtr pWin); @@ -753,7 +753,7 @@ SProcXFixesSetWindowShapeRegion(ClientPtr client) swaps(&stuff->xOff); swaps(&stuff->yOff); swapl(&stuff->region); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetWindowShapeRegion(client); } static int @@ -802,7 +802,7 @@ SProcXFixesSetPictureClipRegion(ClientPtr client) swapl(&stuff->region); swaps(&stuff->xOrigin); swaps(&stuff->yOrigin); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetPictureClipRegion(client); } int @@ -857,7 +857,7 @@ SProcXFixesExpandRegion(ClientPtr client) swaps(&stuff->right); swaps(&stuff->top); swaps(&stuff->bottom); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesExpandRegion(client); } #ifdef PANORAMIX diff --git a/xfixes/saveset.c b/xfixes/saveset.c index 3db5c6634..863319d31 100644 --- a/xfixes/saveset.c +++ b/xfixes/saveset.c @@ -66,5 +66,5 @@ SProcXFixesChangeSaveSet(ClientPtr client) swaps(&stuff->length); swapl(&stuff->window); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesChangeSaveSet(client); } diff --git a/xfixes/select.c b/xfixes/select.c index 81b151199..5a70ddb95 100644 --- a/xfixes/select.c +++ b/xfixes/select.c @@ -208,7 +208,7 @@ SProcXFixesSelectSelectionInput(ClientPtr client) swapl(&stuff->window); swapl(&stuff->selection); swapl(&stuff->eventMask); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSelectSelectionInput(client); } void _X_COLD diff --git a/xfixes/xfixes.c b/xfixes/xfixes.c index a46a6b065..318767f34 100644 --- a/xfixes/xfixes.c +++ b/xfixes/xfixes.c @@ -106,56 +106,99 @@ static const int version_requests[] = { X_XFixesGetClientDisconnectMode, /* Version 6 */ }; -int (*ProcXFixesVector[XFixesNumberRequests]) (ClientPtr) = { -/*************** Version 1 ******************/ - ProcXFixesQueryVersion, - ProcXFixesChangeSaveSet, - ProcXFixesSelectSelectionInput, - ProcXFixesSelectCursorInput, ProcXFixesGetCursorImage, -/*************** Version 2 ******************/ - ProcXFixesCreateRegion, - ProcXFixesCreateRegionFromBitmap, - ProcXFixesCreateRegionFromWindow, - ProcXFixesCreateRegionFromGC, - ProcXFixesCreateRegionFromPicture, - ProcXFixesDestroyRegion, - ProcXFixesSetRegion, - ProcXFixesCopyRegion, - ProcXFixesCombineRegion, - ProcXFixesCombineRegion, - ProcXFixesCombineRegion, - ProcXFixesInvertRegion, - ProcXFixesTranslateRegion, - ProcXFixesRegionExtents, - ProcXFixesFetchRegion, - ProcXFixesSetGCClipRegion, - ProcXFixesSetWindowShapeRegion, - ProcXFixesSetPictureClipRegion, - ProcXFixesSetCursorName, - ProcXFixesGetCursorName, - ProcXFixesGetCursorImageAndName, - ProcXFixesChangeCursor, ProcXFixesChangeCursorByName, -/*************** Version 3 ******************/ - ProcXFixesExpandRegion, -/*************** Version 4 ****************/ - ProcXFixesHideCursor, ProcXFixesShowCursor, -/*************** Version 5 ****************/ - ProcXFixesCreatePointerBarrier, ProcXFixesDestroyPointerBarrier, -/*************** Version 6 ****************/ - ProcXFixesSetClientDisconnectMode, ProcXFixesGetClientDisconnectMode, -}; - static int ProcXFixesDispatch(ClientPtr client) { - REQUEST(xXFixesReq); + REQUEST(xReq); XFixesClientPtr pXFixesClient = GetXFixesClient(client); if (pXFixesClient->major_version >= ARRAY_SIZE(version_requests)) return BadRequest; - if (stuff->xfixesReqType > version_requests[pXFixesClient->major_version]) + if (stuff->data > version_requests[pXFixesClient->major_version]) return BadRequest; - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + + switch (stuff->data) { + /*************** Version 1 ******************/ + case X_XFixesQueryVersion: + return ProcXFixesQueryVersion(client); + case X_XFixesChangeSaveSet: + return ProcXFixesChangeSaveSet(client); + case X_XFixesSelectSelectionInput: + return ProcXFixesSelectSelectionInput(client); + case X_XFixesSelectCursorInput: + return ProcXFixesSelectCursorInput(client); + case X_XFixesGetCursorImage: + return ProcXFixesGetCursorImage(client); + + /*************** Version 2 ******************/ + case X_XFixesCreateRegion: + return ProcXFixesCreateRegion(client); + case X_XFixesCreateRegionFromBitmap: + return ProcXFixesCreateRegionFromBitmap(client); + case X_XFixesCreateRegionFromWindow: + return ProcXFixesCreateRegionFromWindow(client); + case X_XFixesCreateRegionFromGC: + return ProcXFixesCreateRegionFromGC(client); + case X_XFixesCreateRegionFromPicture: + return ProcXFixesCreateRegionFromPicture(client); + case X_XFixesDestroyRegion: + return ProcXFixesDestroyRegion(client); + case X_XFixesSetRegion: + return ProcXFixesSetRegion(client); + case X_XFixesCopyRegion: + return ProcXFixesCopyRegion(client); + case X_XFixesUnionRegion: + return ProcXFixesCombineRegion(client); + case X_XFixesIntersectRegion: + return ProcXFixesCombineRegion(client); + case X_XFixesSubtractRegion: + return ProcXFixesCombineRegion(client); + case X_XFixesInvertRegion: + return ProcXFixesInvertRegion(client); + case X_XFixesTranslateRegion: + return ProcXFixesTranslateRegion(client); + case X_XFixesRegionExtents: + return ProcXFixesRegionExtents(client); + case X_XFixesFetchRegion: + return ProcXFixesFetchRegion(client); + case X_XFixesSetGCClipRegion: + return ProcXFixesSetGCClipRegion(client); + case X_XFixesSetWindowShapeRegion: + return ProcXFixesSetWindowShapeRegion(client); + case X_XFixesSetPictureClipRegion: + return ProcXFixesSetPictureClipRegion(client); + case X_XFixesSetCursorName: + return ProcXFixesSetCursorName(client); + case X_XFixesGetCursorName: + return ProcXFixesGetCursorName(client); + case X_XFixesGetCursorImageAndName: + return ProcXFixesGetCursorImageAndName(client); + case X_XFixesChangeCursor: + return ProcXFixesChangeCursor(client); + case X_XFixesChangeCursorByName: + return ProcXFixesChangeCursorByName(client); + + /*************** Version 3 ******************/ + case X_XFixesExpandRegion: + return ProcXFixesExpandRegion(client); + /*************** Version 4 ******************/ + case X_XFixesHideCursor: + return ProcXFixesHideCursor(client); + case X_XFixesShowCursor: + return ProcXFixesShowCursor(client); + /*************** Version 5 ******************/ + case X_XFixesCreatePointerBarrier: + return ProcXFixesCreatePointerBarrier(client); + case X_XFixesDestroyPointerBarrier: + return ProcXFixesDestroyPointerBarrier(client); + /*************** Version 6 ******************/ + case X_XFixesSetClientDisconnectMode: + return ProcXFixesSetClientDisconnectMode(client); + case X_XFixesGetClientDisconnectMode: + return ProcXFixesGetClientDisconnectMode(client); + default: + return BadRequest; + } } static _X_COLD int @@ -167,59 +210,102 @@ SProcXFixesQueryVersion(ClientPtr client) swaps(&stuff->length); swapl(&stuff->majorVersion); swapl(&stuff->minorVersion); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesQueryVersion(client); } -static int (*SProcXFixesVector[XFixesNumberRequests]) (ClientPtr) = { -/*************** Version 1 ******************/ - SProcXFixesQueryVersion, - SProcXFixesChangeSaveSet, - SProcXFixesSelectSelectionInput, - SProcXFixesSelectCursorInput, SProcXFixesGetCursorImage, -/*************** Version 2 ******************/ - SProcXFixesCreateRegion, - SProcXFixesCreateRegionFromBitmap, - SProcXFixesCreateRegionFromWindow, - SProcXFixesCreateRegionFromGC, - SProcXFixesCreateRegionFromPicture, - SProcXFixesDestroyRegion, - SProcXFixesSetRegion, - SProcXFixesCopyRegion, - SProcXFixesCombineRegion, - SProcXFixesCombineRegion, - SProcXFixesCombineRegion, - SProcXFixesInvertRegion, - SProcXFixesTranslateRegion, - SProcXFixesRegionExtents, - SProcXFixesFetchRegion, - SProcXFixesSetGCClipRegion, - SProcXFixesSetWindowShapeRegion, - SProcXFixesSetPictureClipRegion, - SProcXFixesSetCursorName, - SProcXFixesGetCursorName, - SProcXFixesGetCursorImageAndName, - SProcXFixesChangeCursor, SProcXFixesChangeCursorByName, -/*************** Version 3 ******************/ - SProcXFixesExpandRegion, -/*************** Version 4 ****************/ - SProcXFixesHideCursor, SProcXFixesShowCursor, -/*************** Version 5 ****************/ - SProcXFixesCreatePointerBarrier, SProcXFixesDestroyPointerBarrier, -/*************** Version 6 ****************/ - SProcXFixesSetClientDisconnectMode, SProcXFixesGetClientDisconnectMode, -}; - static _X_COLD int SProcXFixesDispatch(ClientPtr client) { - REQUEST(xXFixesReq); + REQUEST(xReq); XFixesClientPtr pXFixesClient = GetXFixesClient(client); if (pXFixesClient->major_version >= ARRAY_SIZE(version_requests)) return BadRequest; - if (stuff->xfixesReqType > version_requests[pXFixesClient->major_version]) + if (stuff->data > version_requests[pXFixesClient->major_version]) return BadRequest; - return (*SProcXFixesVector[stuff->xfixesReqType]) (client); + + switch (stuff->data) { + /*************** Version 1 ******************/ + case X_XFixesQueryVersion: + return SProcXFixesQueryVersion(client); + case X_XFixesChangeSaveSet: + return SProcXFixesChangeSaveSet(client); + case X_XFixesSelectSelectionInput: + return SProcXFixesSelectSelectionInput(client); + case X_XFixesSelectCursorInput: + return SProcXFixesSelectCursorInput(client); + case X_XFixesGetCursorImage: + return SProcXFixesGetCursorImage(client); + + /*************** Version 2 ******************/ + case X_XFixesCreateRegion: + return SProcXFixesCreateRegion(client); + case X_XFixesCreateRegionFromBitmap: + return SProcXFixesCreateRegionFromBitmap(client); + case X_XFixesCreateRegionFromWindow: + return SProcXFixesCreateRegionFromWindow(client); + case X_XFixesCreateRegionFromGC: + return SProcXFixesCreateRegionFromGC(client); + case X_XFixesCreateRegionFromPicture: + return SProcXFixesCreateRegionFromPicture(client); + case X_XFixesDestroyRegion: + return SProcXFixesDestroyRegion(client); + case X_XFixesSetRegion: + return SProcXFixesSetRegion(client); + case X_XFixesCopyRegion: + return SProcXFixesCopyRegion(client); + case X_XFixesUnionRegion: + return SProcXFixesCombineRegion(client); + case X_XFixesIntersectRegion: + return SProcXFixesCombineRegion(client); + case X_XFixesSubtractRegion: + return SProcXFixesCombineRegion(client); + case X_XFixesInvertRegion: + return SProcXFixesInvertRegion(client); + case X_XFixesTranslateRegion: + return SProcXFixesTranslateRegion(client); + case X_XFixesRegionExtents: + return SProcXFixesRegionExtents(client); + case X_XFixesFetchRegion: + return SProcXFixesFetchRegion(client); + case X_XFixesSetGCClipRegion: + return SProcXFixesSetGCClipRegion(client); + case X_XFixesSetWindowShapeRegion: + return SProcXFixesSetWindowShapeRegion(client); + case X_XFixesSetPictureClipRegion: + return SProcXFixesSetPictureClipRegion(client); + case X_XFixesSetCursorName: + return SProcXFixesSetCursorName(client); + case X_XFixesGetCursorName: + return SProcXFixesGetCursorName(client); + case X_XFixesGetCursorImageAndName: + return SProcXFixesGetCursorImageAndName(client); + case X_XFixesChangeCursor: + return SProcXFixesChangeCursor(client); + case X_XFixesChangeCursorByName: + return SProcXFixesChangeCursorByName(client); + + /*************** Version 3 ******************/ + case X_XFixesExpandRegion: + return SProcXFixesExpandRegion(client); + /*************** Version 4 ******************/ + case X_XFixesHideCursor: + return SProcXFixesHideCursor(client); + case X_XFixesShowCursor: + return SProcXFixesShowCursor(client); + /*************** Version 5 ******************/ + case X_XFixesCreatePointerBarrier: + return SProcXFixesCreatePointerBarrier(client); + case X_XFixesDestroyPointerBarrier: + return SProcXFixesDestroyPointerBarrier(client); + /*************** Version 6 ******************/ + case X_XFixesSetClientDisconnectMode: + return SProcXFixesSetClientDisconnectMode(client); + case X_XFixesGetClientDisconnectMode: + return SProcXFixesGetClientDisconnectMode(client); + default: + return BadRequest; + } } void diff --git a/xfixes/xfixesint.h b/xfixes/xfixesint.h index 0ad9ee146..1b46915ed 100644 --- a/xfixes/xfixesint.h +++ b/xfixes/xfixesint.h @@ -69,8 +69,6 @@ typedef struct _XFixesClient { #define GetXFixesClient(pClient) ((XFixesClientPtr)dixLookupPrivate(&(pClient)->devPrivates, XFixesClientPrivateKey)) -extern int (*ProcXFixesVector[XFixesNumberRequests]) (ClientPtr); - /* Save set */ int ProcXFixesChangeSaveSet(ClientPtr client);