diff --git a/xfixes/cursor.c b/xfixes/cursor.c index 05f79d36c..5f5bb3cfb 100644 --- a/xfixes/cursor.c +++ b/xfixes/cursor.c @@ -306,7 +306,7 @@ SProcXFixesSelectCursorInput(ClientPtr client) swaps(&stuff->length); swapl(&stuff->window); swapl(&stuff->eventMask); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSelectCursorInput(client); } void _X_COLD @@ -423,7 +423,7 @@ SProcXFixesGetCursorImage(ClientPtr client) { REQUEST(xXFixesGetCursorImageReq); swaps(&stuff->length); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesGetCursorImage(client); } int @@ -455,7 +455,7 @@ SProcXFixesSetCursorName(ClientPtr client) REQUEST_AT_LEAST_SIZE(xXFixesSetCursorNameReq); swapl(&stuff->cursor); swaps(&stuff->nbytes); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetCursorName(client); } int @@ -503,7 +503,7 @@ SProcXFixesGetCursorName(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesGetCursorNameReq); swapl(&stuff->cursor); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesGetCursorName(client); } int @@ -580,7 +580,7 @@ SProcXFixesGetCursorImageAndName(ClientPtr client) { REQUEST(xXFixesGetCursorImageAndNameReq); swaps(&stuff->length); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesGetCursorImageAndName(client); } /* @@ -711,7 +711,7 @@ SProcXFixesChangeCursor(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesChangeCursorReq); swapl(&stuff->source); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesChangeCursor(client); } static Bool @@ -750,7 +750,7 @@ SProcXFixesChangeCursorByName(ClientPtr client) REQUEST_AT_LEAST_SIZE(xXFixesChangeCursorByNameReq); swapl(&stuff->source); swaps(&stuff->nbytes); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesChangeCursorByName(client); } /* @@ -908,7 +908,7 @@ SProcXFixesHideCursor(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesHideCursorReq); swapl(&stuff->window); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesHideCursor(client); } int @@ -958,7 +958,7 @@ SProcXFixesShowCursor(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesShowCursorReq); swapl(&stuff->window); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesShowCursor(client); } static int @@ -1045,7 +1045,7 @@ SProcXFixesCreatePointerBarrier(ClientPtr client) swaps(in_devices + i); } - return ProcXFixesVector[stuff->xfixesReqType] (client); + return ProcXFixesCreatePointerBarrier(client); } int @@ -1066,7 +1066,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 e2140572a..5a6c16b86 100644 --- a/xfixes/disconnect.c +++ b/xfixes/disconnect.c @@ -85,7 +85,7 @@ SProcXFixesSetClientDisconnectMode(ClientPtr client) swapl(&stuff->disconnect_mode); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetClientDisconnectMode(client); } int @@ -120,7 +120,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 51b3cda91..4c22af813 100644 --- a/xfixes/region.c +++ b/xfixes/region.c @@ -102,7 +102,7 @@ SProcXFixesCreateRegion(ClientPtr client) REQUEST_AT_LEAST_SIZE(xXFixesCreateRegionReq); swapl(&stuff->region); SwapRestS(stuff); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegion(client); } int @@ -146,7 +146,7 @@ SProcXFixesCreateRegionFromBitmap(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCreateRegionFromBitmapReq); swapl(&stuff->region); swapl(&stuff->bitmap); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegionFromBitmap(client); } int @@ -205,7 +205,7 @@ SProcXFixesCreateRegionFromWindow(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCreateRegionFromWindowReq); swapl(&stuff->region); swapl(&stuff->window); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegionFromWindow(client); } int @@ -248,7 +248,7 @@ SProcXFixesCreateRegionFromGC(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCreateRegionFromGCReq); swapl(&stuff->region); swapl(&stuff->gc); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegionFromGC(client); } int @@ -290,7 +290,7 @@ SProcXFixesCreateRegionFromPicture(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCreateRegionFromPictureReq); swapl(&stuff->region); swapl(&stuff->picture); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCreateRegionFromPicture(client); } int @@ -313,7 +313,7 @@ SProcXFixesDestroyRegion(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesDestroyRegionReq); swapl(&stuff->region); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesDestroyRegion(client); } int @@ -352,7 +352,7 @@ SProcXFixesSetRegion(ClientPtr client) REQUEST_AT_LEAST_SIZE(xXFixesSetRegionReq); swapl(&stuff->region); SwapRestS(stuff); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetRegion(client); } int @@ -381,7 +381,7 @@ SProcXFixesCopyRegion(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesCopyRegionReq); swapl(&stuff->source); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCopyRegion(client); } int @@ -424,7 +424,7 @@ SProcXFixesCombineRegion(ClientPtr client) swapl(&stuff->source1); swapl(&stuff->source2); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesCombineRegion(client); } int @@ -471,7 +471,7 @@ SProcXFixesInvertRegion(ClientPtr client) swaps(&stuff->width); swaps(&stuff->height); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesInvertRegion(client); } int @@ -498,7 +498,7 @@ SProcXFixesTranslateRegion(ClientPtr client) swapl(&stuff->region); swaps(&stuff->dx); swaps(&stuff->dy); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesTranslateRegion(client); } int @@ -526,7 +526,7 @@ SProcXFixesRegionExtents(ClientPtr client) REQUEST_SIZE_MATCH(xXFixesRegionExtentsReq); swapl(&stuff->source); swapl(&stuff->destination); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesRegionExtents(client); } int @@ -590,7 +590,7 @@ SProcXFixesFetchRegion(ClientPtr client) swaps(&stuff->length); REQUEST_SIZE_MATCH(xXFixesFetchRegionReq); swapl(&stuff->region); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesFetchRegion(client); } static int @@ -652,7 +652,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); @@ -755,7 +755,7 @@ SProcXFixesSetWindowShapeRegion(ClientPtr client) swaps(&stuff->xOff); swaps(&stuff->yOff); swapl(&stuff->region); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetWindowShapeRegion(client); } static int @@ -804,7 +804,7 @@ SProcXFixesSetPictureClipRegion(ClientPtr client) swapl(&stuff->region); swaps(&stuff->xOrigin); swaps(&stuff->yOrigin); - return (*ProcXFixesVector[stuff->xfixesReqType]) (client); + return ProcXFixesSetPictureClipRegion(client); } int @@ -859,7 +859,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 981d15b86..1c5704ead 100644 --- a/xfixes/saveset.c +++ b/xfixes/saveset.c @@ -68,5 +68,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 660eed210..a39a13f5b 100644 --- a/xfixes/select.c +++ b/xfixes/select.c @@ -210,7 +210,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 94870045a..740dcbc51 100644 --- a/xfixes/xfixes.c +++ b/xfixes/xfixes.c @@ -108,56 +108,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 @@ -169,59 +212,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);