From 44f947b9cb65e2b4fc4e2425f897c60f500c4364 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 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);