From 7baf8767a0a58dfba2e5e846ea8b0135e7e0da39 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Wed, 10 Jul 2024 12:28:12 +0200 Subject: [PATCH] composite: use REQUEST_HEAD_STRUCT and REQUEST_FIELD_* macros Use the new macros to make request struct parsing / field swapping much easier. Signed-off-by: Enrico Weigelt, metux IT consult --- composite/compext.c | 158 +++++++------------------------------------- 1 file changed, 25 insertions(+), 133 deletions(-) diff --git a/composite/compext.c b/composite/compext.c index 43d920635..8f599d39a 100644 --- a/composite/compext.c +++ b/composite/compext.c @@ -44,6 +44,7 @@ #include #include "dix/dix_priv.h" +#include "dix/request_priv.h" #include "Xext/panoramiXsrv.h" #include "compint.h" @@ -99,6 +100,10 @@ FreeCompositeClientOverlay(void *value, XID ccwid) static int ProcCompositeQueryVersion(ClientPtr client) { + REQUEST_HEAD_STRUCT(xCompositeQueryVersionReq); + REQUEST_FIELD_CARD32(majorVersion); + REQUEST_FIELD_CARD32(minorVersion); + CompositeClientPtr pCompositeClient = GetCompositeClient(client); xCompositeQueryVersionReply rep = { .type = X_Reply, @@ -106,9 +111,6 @@ ProcCompositeQueryVersion(ClientPtr client) .length = 0 }; - REQUEST(xCompositeQueryVersionReq); - - REQUEST_SIZE_MATCH(xCompositeQueryVersionReq); if (stuff->majorVersion < SERVER_COMPOSITE_MAJOR_VERSION) { rep.majorVersion = stuff->majorVersion; rep.minorVersion = stuff->minorVersion; @@ -187,13 +189,14 @@ SingleCompositeUnredirectSubwindows(ClientPtr client, xCompositeUnredirectSubwin static int ProcCompositeCreateRegionFromBorderClip(ClientPtr client) { + REQUEST_HEAD_STRUCT(xCompositeCreateRegionFromBorderClipReq); + REQUEST_FIELD_CARD32(region); + REQUEST_FIELD_CARD32(window); + WindowPtr pWin; CompWindowPtr cw; RegionPtr pBorderClip, pRegion; - REQUEST(xCompositeCreateRegionFromBorderClipReq); - - REQUEST_SIZE_MATCH(xCompositeCreateRegionFromBorderClipReq); VERIFY_WINDOW(pWin, stuff->window, client, DixGetAttrAccess); LEGAL_NEW_RESOURCE(stuff->region, client); @@ -375,118 +378,6 @@ ProcCompositeDispatch(ClientPtr client) } } -static int _X_COLD -SProcCompositeQueryVersion(ClientPtr client) -{ - REQUEST(xCompositeQueryVersionReq); - REQUEST_SIZE_MATCH(xCompositeQueryVersionReq); - swapl(&stuff->majorVersion); - swapl(&stuff->minorVersion); - return ProcCompositeQueryVersion(client); -} - -static int _X_COLD -SProcCompositeRedirectWindow(ClientPtr client) -{ - REQUEST(xCompositeRedirectWindowReq); - REQUEST_SIZE_MATCH(xCompositeRedirectWindowReq); - swapl(&stuff->window); - return ProcCompositeRedirectWindow(client); -} - -static int _X_COLD -SProcCompositeRedirectSubwindows(ClientPtr client) -{ - REQUEST(xCompositeRedirectSubwindowsReq); - REQUEST_SIZE_MATCH(xCompositeRedirectSubwindowsReq); - swapl(&stuff->window); - return ProcCompositeRedirectSubwindows(client); -} - -static int _X_COLD -SProcCompositeUnredirectWindow(ClientPtr client) -{ - REQUEST(xCompositeUnredirectWindowReq); - REQUEST_SIZE_MATCH(xCompositeUnredirectWindowReq); - swapl(&stuff->window); - return ProcCompositeUnredirectWindow(client); -} - -static int _X_COLD -SProcCompositeUnredirectSubwindows(ClientPtr client) -{ - REQUEST(xCompositeUnredirectSubwindowsReq); - REQUEST_SIZE_MATCH(xCompositeUnredirectSubwindowsReq); - swapl(&stuff->window); - return ProcCompositeUnredirectSubwindows(client); -} - -static int _X_COLD -SProcCompositeCreateRegionFromBorderClip(ClientPtr client) -{ - REQUEST(xCompositeCreateRegionFromBorderClipReq); - REQUEST_SIZE_MATCH(xCompositeCreateRegionFromBorderClipReq); - swapl(&stuff->region); - swapl(&stuff->window); - return ProcCompositeCreateRegionFromBorderClip(client); -} - -static int _X_COLD -SProcCompositeNameWindowPixmap(ClientPtr client) -{ - REQUEST(xCompositeNameWindowPixmapReq); - REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq); - swapl(&stuff->window); - swapl(&stuff->pixmap); - return ProcCompositeNameWindowPixmap(client); -} - -static int _X_COLD -SProcCompositeGetOverlayWindow(ClientPtr client) -{ - REQUEST(xCompositeGetOverlayWindowReq); - REQUEST_SIZE_MATCH(xCompositeGetOverlayWindowReq); - swapl(&stuff->window); - return ProcCompositeGetOverlayWindow(client); -} - -static int _X_COLD -SProcCompositeReleaseOverlayWindow(ClientPtr client) -{ - REQUEST(xCompositeReleaseOverlayWindowReq); - REQUEST_SIZE_MATCH(xCompositeReleaseOverlayWindowReq); - swapl(&stuff->window); - return ProcCompositeReleaseOverlayWindow(client); -} - -static int _X_COLD -SProcCompositeDispatch(ClientPtr client) -{ - REQUEST(xReq); - 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 */ static SizeType coreGetWindowBytes; @@ -564,7 +455,7 @@ CompositeExtensionInit(void) return; extEntry = AddExtension(COMPOSITE_NAME, 0, 0, - ProcCompositeDispatch, SProcCompositeDispatch, + ProcCompositeDispatch, ProcCompositeDispatch, NULL, StandardMinorOpcode); if (!extEntry) return; @@ -581,8 +472,8 @@ int (*PanoramiXSaveCompositeVector[CompositeNumberRequests]) (ClientPtr); static int ProcCompositeRedirectWindow(ClientPtr client) { - REQUEST(xCompositeRedirectWindowReq); - REQUEST_SIZE_MATCH(xCompositeRedirectWindowReq); + REQUEST_HEAD_STRUCT(xCompositeRedirectWindowReq); + REQUEST_FIELD_CARD32(window); #ifdef XINERAMA if (!compositeUseXinerama) @@ -613,8 +504,8 @@ ProcCompositeRedirectWindow(ClientPtr client) static int ProcCompositeRedirectSubwindows(ClientPtr client) { - REQUEST(xCompositeRedirectSubwindowsReq); - REQUEST_SIZE_MATCH(xCompositeRedirectSubwindowsReq); + REQUEST_HEAD_STRUCT(xCompositeRedirectSubwindowsReq); + REQUEST_FIELD_CARD32(window); #ifdef XINERAMA if (!compositeUseXinerama) @@ -645,8 +536,8 @@ ProcCompositeRedirectSubwindows(ClientPtr client) static int ProcCompositeUnredirectWindow(ClientPtr client) { - REQUEST(xCompositeUnredirectWindowReq); - REQUEST_SIZE_MATCH(xCompositeUnredirectWindowReq); + REQUEST_HEAD_STRUCT(xCompositeUnredirectWindowReq); + REQUEST_FIELD_CARD32(window); #ifdef XINERAMA if (!compositeUseXinerama) @@ -677,8 +568,8 @@ ProcCompositeUnredirectWindow(ClientPtr client) static int ProcCompositeUnredirectSubwindows(ClientPtr client) { - REQUEST(xCompositeUnredirectSubwindowsReq); - REQUEST_SIZE_MATCH(xCompositeUnredirectSubwindowsReq); + REQUEST_HEAD_STRUCT(xCompositeUnredirectSubwindowsReq); + REQUEST_FIELD_CARD32(window); #ifdef XINERAMA if (!compositeUseXinerama) @@ -709,8 +600,9 @@ ProcCompositeUnredirectSubwindows(ClientPtr client) static int ProcCompositeNameWindowPixmap(ClientPtr client) { - REQUEST(xCompositeNameWindowPixmapReq); - REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq); + REQUEST_HEAD_STRUCT(xCompositeNameWindowPixmapReq); + REQUEST_FIELD_CARD32(window); + REQUEST_FIELD_CARD32(pixmap); #ifdef XINERAMA if (!compositeUseXinerama) @@ -783,8 +675,8 @@ ProcCompositeNameWindowPixmap(ClientPtr client) static int ProcCompositeGetOverlayWindow(ClientPtr client) { - REQUEST(xCompositeGetOverlayWindowReq); - REQUEST_SIZE_MATCH(xCompositeGetOverlayWindowReq); + REQUEST_HEAD_STRUCT(xCompositeGetOverlayWindowReq); + REQUEST_FIELD_CARD32(window); #ifdef XINERAMA if (!compositeUseXinerama) @@ -890,8 +782,8 @@ ProcCompositeGetOverlayWindow(ClientPtr client) static int ProcCompositeReleaseOverlayWindow(ClientPtr client) { - REQUEST(xCompositeReleaseOverlayWindowReq); - REQUEST_SIZE_MATCH(xCompositeReleaseOverlayWindowReq); + REQUEST_HEAD_STRUCT(xCompositeReleaseOverlayWindowReq); + REQUEST_FIELD_CARD32(window); #ifdef XINERAMA if (!compositeUseXinerama)