From 7e120f0f032509ebc1e24631ce1a5a44be82cb37 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Wed, 10 Jul 2024 11:36:44 +0200 Subject: [PATCH] composite: 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 --- composite/compext.c | 95 +++++++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 42 deletions(-) diff --git a/composite/compext.c b/composite/compext.c index 60056b340..b52e514fd 100644 --- a/composite/compext.c +++ b/composite/compext.c @@ -347,25 +347,32 @@ static int ProcCompositeUnredirectSubwindows(ClientPtr client); static int ProcCompositeNameWindowPixmap(ClientPtr client); static int ProcCompositeGetOverlayWindow(ClientPtr client); -static int (*ProcCompositeVector[CompositeNumberRequests]) (ClientPtr) = { -ProcCompositeQueryVersion, - ProcCompositeRedirectWindow, - ProcCompositeRedirectSubwindows, - ProcCompositeUnredirectWindow, - ProcCompositeUnredirectSubwindows, - ProcCompositeCreateRegionFromBorderClip, - ProcCompositeNameWindowPixmap, - ProcCompositeGetOverlayWindow, ProcCompositeReleaseOverlayWindow,}; - static int ProcCompositeDispatch(ClientPtr client) { REQUEST(xReq); - - if (stuff->data < CompositeNumberRequests) - return (*ProcCompositeVector[stuff->data]) (client); - else - return BadRequest; + switch (stuff->data) { + case X_CompositeQueryVersion: + return ProcCompositeQueryVersion(client); + case X_CompositeRedirectWindow: + return ProcCompositeRedirectWindow(client); + case X_CompositeRedirectSubwindows: + return ProcCompositeRedirectSubwindows(client); + case X_CompositeUnredirectWindow: + return ProcCompositeUnredirectWindow(client); + case X_CompositeUnredirectSubwindows: + return ProcCompositeUnredirectSubwindows(client); + case X_CompositeCreateRegionFromBorderClip: + return ProcCompositeCreateRegionFromBorderClip(client); + case X_CompositeNameWindowPixmap: + return ProcCompositeNameWindowPixmap(client); + case X_CompositeGetOverlayWindow: + return ProcCompositeGetOverlayWindow(client); + case X_CompositeReleaseOverlayWindow: + return ProcCompositeReleaseOverlayWindow(client); + default: + return BadRequest; + } } static int _X_COLD @@ -375,7 +382,7 @@ SProcCompositeQueryVersion(ClientPtr client) REQUEST_SIZE_MATCH(xCompositeQueryVersionReq); swapl(&stuff->majorVersion); swapl(&stuff->minorVersion); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeQueryVersion(client); } static int _X_COLD @@ -384,7 +391,7 @@ SProcCompositeRedirectWindow(ClientPtr client) REQUEST(xCompositeRedirectWindowReq); REQUEST_SIZE_MATCH(xCompositeRedirectWindowReq); swapl(&stuff->window); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeRedirectWindow(client); } static int _X_COLD @@ -393,7 +400,7 @@ SProcCompositeRedirectSubwindows(ClientPtr client) REQUEST(xCompositeRedirectSubwindowsReq); REQUEST_SIZE_MATCH(xCompositeRedirectSubwindowsReq); swapl(&stuff->window); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeRedirectSubwindows(client); } static int _X_COLD @@ -402,7 +409,7 @@ SProcCompositeUnredirectWindow(ClientPtr client) REQUEST(xCompositeUnredirectWindowReq); REQUEST_SIZE_MATCH(xCompositeUnredirectWindowReq); swapl(&stuff->window); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeUnredirectWindow(client); } static int _X_COLD @@ -411,7 +418,7 @@ SProcCompositeUnredirectSubwindows(ClientPtr client) REQUEST(xCompositeUnredirectSubwindowsReq); REQUEST_SIZE_MATCH(xCompositeUnredirectSubwindowsReq); swapl(&stuff->window); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeUnredirectSubwindows(client); } static int _X_COLD @@ -421,7 +428,7 @@ SProcCompositeCreateRegionFromBorderClip(ClientPtr client) REQUEST_SIZE_MATCH(xCompositeCreateRegionFromBorderClipReq); swapl(&stuff->region); swapl(&stuff->window); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeCreateRegionFromBorderClip(client); } static int _X_COLD @@ -431,7 +438,7 @@ SProcCompositeNameWindowPixmap(ClientPtr client) REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq); swapl(&stuff->window); swapl(&stuff->pixmap); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeNameWindowPixmap(client); } static int _X_COLD @@ -440,7 +447,7 @@ SProcCompositeGetOverlayWindow(ClientPtr client) REQUEST(xCompositeGetOverlayWindowReq); REQUEST_SIZE_MATCH(xCompositeGetOverlayWindowReq); swapl(&stuff->window); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeGetOverlayWindow(client); } static int _X_COLD @@ -449,31 +456,35 @@ SProcCompositeReleaseOverlayWindow(ClientPtr client) REQUEST(xCompositeReleaseOverlayWindowReq); REQUEST_SIZE_MATCH(xCompositeReleaseOverlayWindowReq); swapl(&stuff->window); - return (*ProcCompositeVector[stuff->compositeReqType]) (client); + return ProcCompositeReleaseOverlayWindow(client); } -static int -(*SProcCompositeVector[CompositeNumberRequests]) (ClientPtr) = { - SProcCompositeQueryVersion, - SProcCompositeRedirectWindow, - SProcCompositeRedirectSubwindows, - SProcCompositeUnredirectWindow, - SProcCompositeUnredirectSubwindows, - SProcCompositeCreateRegionFromBorderClip, - SProcCompositeNameWindowPixmap, - SProcCompositeGetOverlayWindow, - SProcCompositeReleaseOverlayWindow, -}; - static int _X_COLD SProcCompositeDispatch(ClientPtr client) { REQUEST(xReq); - - if (stuff->data < CompositeNumberRequests) - return (*SProcCompositeVector[stuff->data]) (client); - else - return BadRequest; + switch (stuff->data) { + case X_CompositeQueryVersion: + return SProcCompositeQueryVersion(client); + case X_CompositeRedirectWindow: + return SProcCompositeRedirectWindow(client); + case X_CompositeRedirectSubwindows: + return SProcCompositeRedirectSubwindows(client); + case X_CompositeUnredirectWindow: + return SProcCompositeUnredirectWindow(client); + case X_CompositeUnredirectSubwindows: + return SProcCompositeUnredirectSubwindows(client); + case X_CompositeCreateRegionFromBorderClip: + return SProcCompositeCreateRegionFromBorderClip(client); + case X_CompositeNameWindowPixmap: + return SProcCompositeNameWindowPixmap(client); + case X_CompositeGetOverlayWindow: + return SProcCompositeGetOverlayWindow(client); + case X_CompositeReleaseOverlayWindow: + return SProcCompositeReleaseOverlayWindow(client); + default: + return BadRequest; + } } /** @see GetDefaultBytes */