From a6322fe25b2ca8990eab65a347d6ed3cb0461ed6 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Fri, 12 Jul 2024 10:34:41 +0200 Subject: [PATCH] (!1614) xfixes: simplify dispatcher The dispatcher functions are much more complex than they're usually are (just switch/case statement). Bring them in line with the standard scheme used in the Xserver, so further steps become easier. It's also much cleaner to use the defines from proto headers instead of raw numbers. Signed-off-by: Enrico Weigelt, metux IT consult --- xfixes/cursor.c | 22 ++-- xfixes/disconnect.c | 4 +- xfixes/region.c | 34 +++--- xfixes/saveset.c | 2 +- xfixes/select.c | 2 +- xfixes/xfixes.c | 256 +++++++++++++++++++++++++++++--------------- xfixes/xfixesint.h | 2 - 7 files changed, 203 insertions(+), 119 deletions(-) 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);