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 <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-07-10 12:28:12 +02:00
parent 8ca929a021
commit 7baf8767a0

View File

@ -44,6 +44,7 @@
#include <dix-config.h>
#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)