From a0cd40d5afbfd380cf0d25bf5305819997d9e4cd Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Fri, 12 Jul 2024 17:29:24 +0200 Subject: [PATCH] Xext: xvmc: 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 --- Xext/xvmc.c | 66 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/Xext/xvmc.c b/Xext/xvmc.c index c8dd32fa83..c49a11e060 100644 --- a/Xext/xvmc.c +++ b/Xext/xvmc.c @@ -103,14 +103,13 @@ XvMCDestroySubpictureRes(void *data, XID id) static int ProcXvMCQueryVersion(ClientPtr client) { + X_REQUEST_HEAD_STRUCT(xvmcQueryVersionReq); + xvmcQueryVersionReply reply = { .major = SERVER_XVMC_MAJOR_VERSION, .minor = SERVER_XVMC_MINOR_VERSION }; - /* REQUEST(xvmcQueryVersionReq); */ - REQUEST_SIZE_MATCH(xvmcQueryVersionReq); - if (client->swapped) { swapl(&reply.major); swapl(&reply.minor); @@ -126,8 +125,8 @@ ProcXvMCListSurfaceTypes(ClientPtr client) XvMCScreenPtr pScreenPriv; XvMCAdaptorPtr adaptor = NULL; - REQUEST(xvmcListSurfaceTypesReq); - REQUEST_SIZE_MATCH(xvmcListSurfaceTypesReq); + X_REQUEST_HEAD_STRUCT(xvmcListSurfaceTypesReq); + X_REQUEST_FIELD_CARD32(port); VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); @@ -186,8 +185,11 @@ ProcXvMCCreateContext(ClientPtr client) XvMCAdaptorPtr adaptor = NULL; XvMCSurfaceInfoPtr surface = NULL; - REQUEST(xvmcCreateContextReq); - REQUEST_SIZE_MATCH(xvmcCreateContextReq); + X_REQUEST_HEAD_STRUCT(xvmcCreateContextReq); + X_REQUEST_FIELD_CARD32(context_id); + X_REQUEST_FIELD_CARD16(width); + X_REQUEST_FIELD_CARD16(height); + X_REQUEST_FIELD_CARD32(flags); VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); @@ -271,12 +273,12 @@ ProcXvMCCreateContext(ClientPtr client) static int ProcXvMCDestroyContext(ClientPtr client) { + X_REQUEST_HEAD_STRUCT(xvmcDestroyContextReq); + X_REQUEST_FIELD_CARD32(context_id); + void *val; int rc; - REQUEST(xvmcDestroyContextReq); - REQUEST_SIZE_MATCH(xvmcDestroyContextReq); - rc = dixLookupResourceByType(&val, stuff->context_id, XvMCRTContext, client, DixDestroyAccess); if (rc != Success) @@ -290,6 +292,10 @@ ProcXvMCDestroyContext(ClientPtr client) static int ProcXvMCCreateSurface(ClientPtr client) { + X_REQUEST_HEAD_STRUCT(xvmcCreateSurfaceReq); + X_REQUEST_FIELD_CARD32(surface_id); + X_REQUEST_FIELD_CARD32(context_id); + CARD32 *data = NULL; int dwords = 0; int result; @@ -297,9 +303,6 @@ ProcXvMCCreateSurface(ClientPtr client) XvMCSurfacePtr pSurface; XvMCScreenPtr pScreenPriv; - REQUEST(xvmcCreateSurfaceReq); - REQUEST_SIZE_MATCH(xvmcCreateSurfaceReq); - result = dixLookupResourceByType((void **) &pContext, stuff->context_id, XvMCRTContext, client, DixUseAccess); if (result != Success) @@ -342,12 +345,12 @@ ProcXvMCCreateSurface(ClientPtr client) static int ProcXvMCDestroySurface(ClientPtr client) { + X_REQUEST_HEAD_STRUCT(xvmcDestroySurfaceReq); + X_REQUEST_FIELD_CARD32(surface_id); + void *val; int rc; - REQUEST(xvmcDestroySurfaceReq); - REQUEST_SIZE_MATCH(xvmcDestroySurfaceReq); - rc = dixLookupResourceByType(&val, stuff->surface_id, XvMCRTSurface, client, DixDestroyAccess); if (rc != Success) @@ -361,6 +364,13 @@ ProcXvMCDestroySurface(ClientPtr client) static int ProcXvMCCreateSubpicture(ClientPtr client) { + X_REQUEST_HEAD_STRUCT(xvmcCreateSubpictureReq); + X_REQUEST_FIELD_CARD32(subpicture_id); + X_REQUEST_FIELD_CARD32(context_id); + X_REQUEST_FIELD_CARD32(xvimage_id); + X_REQUEST_FIELD_CARD16(width); + X_REQUEST_FIELD_CARD16(height); + Bool image_supported = FALSE; CARD32 *data = NULL; int result, dwords = 0; @@ -370,9 +380,6 @@ ProcXvMCCreateSubpicture(ClientPtr client) XvMCAdaptorPtr adaptor; XvMCSurfaceInfoPtr surface = NULL; - REQUEST(xvmcCreateSubpictureReq); - REQUEST_SIZE_MATCH(xvmcCreateSubpictureReq); - result = dixLookupResourceByType((void **) &pContext, stuff->context_id, XvMCRTContext, client, DixUseAccess); if (result != Success) @@ -471,12 +478,12 @@ ProcXvMCCreateSubpicture(ClientPtr client) static int ProcXvMCDestroySubpicture(ClientPtr client) { + X_REQUEST_HEAD_STRUCT(xvmcDestroySubpictureReq); + X_REQUEST_FIELD_CARD32(subpicture_id); + void *val; int rc; - REQUEST(xvmcDestroySubpictureReq); - REQUEST_SIZE_MATCH(xvmcDestroySubpictureReq); - rc = dixLookupResourceByType(&val, stuff->subpicture_id, XvMCRTSubpicture, client, DixDestroyAccess); if (rc != Success) @@ -490,6 +497,10 @@ ProcXvMCDestroySubpicture(ClientPtr client) static int ProcXvMCListSubpictureTypes(ClientPtr client) { + X_REQUEST_HEAD_STRUCT(xvmcListSubpictureTypesReq); + X_REQUEST_FIELD_CARD32(port); + X_REQUEST_FIELD_CARD32(surface_type_id); + XvPortPtr pPort; XvMCScreenPtr pScreenPriv; ScreenPtr pScreen; @@ -497,9 +508,6 @@ ProcXvMCListSubpictureTypes(ClientPtr client) XvMCSurfaceInfoPtr surface = NULL; XvImagePtr pImage; - REQUEST(xvmcListSubpictureTypesReq); - REQUEST_SIZE_MATCH(xvmcListSubpictureTypesReq); - VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); pScreen = pPort->pAdaptor->pScreen; @@ -599,13 +607,15 @@ ProcXvMCListSubpictureTypes(ClientPtr client) static int ProcXvMCGetDRInfo(ClientPtr client) { + X_REQUEST_HEAD_STRUCT(xvmcGetDRInfoReq); + X_REQUEST_FIELD_CARD32(port); + X_REQUEST_FIELD_CARD32(shmKey); + X_REQUEST_FIELD_CARD32(magic); + XvPortPtr pPort; ScreenPtr pScreen; XvMCScreenPtr pScreenPriv; - REQUEST(xvmcGetDRInfoReq); - REQUEST_SIZE_MATCH(xvmcGetDRInfoReq); - VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); pScreen = pPort->pAdaptor->pScreen;