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 <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-07-12 17:29:24 +02:00
parent 67292b02e3
commit 9ab956a7ef

View File

@ -4,7 +4,12 @@
#include <string.h>
#include <X11/X.h>
#include <X11/Xproto.h>
#include <X11/Xfuncproto.h>
#include <X11/extensions/XvMC.h>
#include <X11/extensions/Xvproto.h>
#include <X11/extensions/XvMCproto.h>
#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 <X11/Xfuncproto.h>
#include <X11/extensions/XvMC.h>
#include <X11/extensions/Xvproto.h>
#include <X11/extensions/XvMCproto.h>
#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;