From 9ab956a7ef5203b0774973787d8fbb828a875886 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 | 75 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/Xext/xvmc.c b/Xext/xvmc.c index 6badbb984..433fa35d1 100644 --- a/Xext/xvmc.c +++ b/Xext/xvmc.c @@ -4,7 +4,12 @@ #include #include #include +#include +#include +#include +#include +#include "dix/request_priv.h" #include "dix/screen_hooks_priv.h" #include "Xext/xvdix_priv.h" @@ -16,10 +21,6 @@ #include "extnsionst.h" #include "extinit_priv.h" #include "servermd.h" -#include -#include -#include -#include #include "xvmcext.h" #ifdef HAS_XVMCSHM @@ -109,6 +110,8 @@ XvMCDestroySubpictureRes(void *data, XID id) static int ProcXvMCQueryVersion(ClientPtr client) { + REQUEST_HEAD_STRUCT(xvmcQueryVersionReq); + xvmcQueryVersionReply rep = { .type = X_Reply, .sequenceNumber = client->sequence, @@ -116,9 +119,6 @@ ProcXvMCQueryVersion(ClientPtr client) .minor = SERVER_XVMC_MINOR_VERSION }; - /* REQUEST(xvmcQueryVersionReq); */ - REQUEST_SIZE_MATCH(xvmcQueryVersionReq); - WriteToClient(client, sizeof(xvmcQueryVersionReply), &rep); return Success; } @@ -130,8 +130,8 @@ ProcXvMCListSurfaceTypes(ClientPtr client) XvMCScreenPtr pScreenPriv; XvMCAdaptorPtr adaptor = NULL; - REQUEST(xvmcListSurfaceTypesReq); - REQUEST_SIZE_MATCH(xvmcListSurfaceTypesReq); + REQUEST_HEAD_STRUCT(xvmcListSurfaceTypesReq); + REQUEST_FIELD_CARD32(port); VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); @@ -192,8 +192,11 @@ ProcXvMCCreateContext(ClientPtr client) XvMCAdaptorPtr adaptor = NULL; XvMCSurfaceInfoPtr surface = NULL; - REQUEST(xvmcCreateContextReq); - REQUEST_SIZE_MATCH(xvmcCreateContextReq); + REQUEST_HEAD_STRUCT(xvmcCreateContextReq); + REQUEST_FIELD_CARD32(context_id); + REQUEST_FIELD_CARD16(width); + REQUEST_FIELD_CARD16(height); + REQUEST_FIELD_CARD32(flags); VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); @@ -276,12 +279,12 @@ ProcXvMCCreateContext(ClientPtr client) static int ProcXvMCDestroyContext(ClientPtr client) { + REQUEST_HEAD_STRUCT(xvmcDestroyContextReq); + 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) @@ -295,6 +298,10 @@ ProcXvMCDestroyContext(ClientPtr client) static int ProcXvMCCreateSurface(ClientPtr client) { + REQUEST_HEAD_STRUCT(xvmcCreateSurfaceReq); + REQUEST_FIELD_CARD32(surface_id); + REQUEST_FIELD_CARD32(context_id); + CARD32 *data = NULL; int dwords = 0; int result; @@ -302,9 +309,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) @@ -353,12 +357,12 @@ ProcXvMCCreateSurface(ClientPtr client) static int ProcXvMCDestroySurface(ClientPtr client) { + REQUEST_HEAD_STRUCT(xvmcDestroySurfaceReq); + 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) @@ -372,6 +376,13 @@ ProcXvMCDestroySurface(ClientPtr client) static int ProcXvMCCreateSubpicture(ClientPtr client) { + REQUEST_HEAD_STRUCT(xvmcCreateSubpictureReq); + REQUEST_FIELD_CARD32(subpicture_id); + REQUEST_FIELD_CARD32(context_id); + REQUEST_FIELD_CARD32(xvimage_id); + REQUEST_FIELD_CARD16(width); + REQUEST_FIELD_CARD16(height); + Bool image_supported = FALSE; CARD32 *data = NULL; int i, result, dwords = 0; @@ -381,9 +392,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) @@ -480,12 +488,12 @@ ProcXvMCCreateSubpicture(ClientPtr client) static int ProcXvMCDestroySubpicture(ClientPtr client) { + REQUEST_HEAD_STRUCT(xvmcDestroySubpictureReq); + 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) @@ -499,6 +507,10 @@ ProcXvMCDestroySubpicture(ClientPtr client) static int ProcXvMCListSubpictureTypes(ClientPtr client) { + REQUEST_HEAD_STRUCT(xvmcListSubpictureTypesReq); + REQUEST_FIELD_CARD32(port); + REQUEST_FIELD_CARD32(surface_type_id); + XvPortPtr pPort; XvMCScreenPtr pScreenPriv; ScreenPtr pScreen; @@ -507,9 +519,6 @@ ProcXvMCListSubpictureTypes(ClientPtr client) XvImagePtr pImage; int i, j; - REQUEST(xvmcListSubpictureTypesReq); - REQUEST_SIZE_MATCH(xvmcListSubpictureTypesReq); - VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); pScreen = pPort->pAdaptor->pScreen; @@ -596,6 +605,11 @@ ProcXvMCListSubpictureTypes(ClientPtr client) static int ProcXvMCGetDRInfo(ClientPtr client) { + REQUEST_HEAD_STRUCT(xvmcGetDRInfoReq); + REQUEST_FIELD_CARD32(port); + REQUEST_FIELD_CARD32(shmKey); + REQUEST_FIELD_CARD32(magic); + XvPortPtr pPort; ScreenPtr pScreen; XvMCScreenPtr pScreenPriv; @@ -604,9 +618,6 @@ ProcXvMCGetDRInfo(ClientPtr client) volatile CARD32 *patternP; #endif - REQUEST(xvmcGetDRInfoReq); - REQUEST_SIZE_MATCH(xvmcGetDRInfoReq); - VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); pScreen = pPort->pAdaptor->pScreen;