dri: 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-18 19:08:03 +02:00
parent 32f6a22dd1
commit d03d79f96b

View File

@ -43,6 +43,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <X11/Xproto.h>
#include "dix/dix_priv.h"
#include "dix/request_priv.h"
#include "xf86.h"
#include "misc.h"
@ -77,6 +78,8 @@ XF86DRIResetProc(ExtensionEntry *extEntry)
static int
ProcXF86DRIQueryVersion(register ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRIQueryVersionReq);
xXF86DRIQueryVersionReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
@ -85,7 +88,6 @@ ProcXF86DRIQueryVersion(register ClientPtr client)
.patchVersion = SERVER_XF86DRI_PATCH_VERSION
};
REQUEST_SIZE_MATCH(xXF86DRIQueryVersionReq);
if (client->swapped) {
swaps(&rep.sequenceNumber);
swapl(&rep.length);
@ -100,10 +102,11 @@ ProcXF86DRIQueryVersion(register ClientPtr client)
static int
ProcXF86DRIQueryDirectRenderingCapable(register ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRIQueryDirectRenderingCapableReq);
REQUEST_FIELD_CARD32(screen);
Bool isCapable;
REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -137,12 +140,12 @@ ProcXF86DRIQueryDirectRenderingCapable(register ClientPtr client)
static int
ProcXF86DRIOpenConnection(register ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRIOpenConnectionReq);
drm_handle_t hSAREA;
char *busIdString;
CARD32 busIdStringLength = 0;
REQUEST(xXF86DRIOpenConnectionReq);
REQUEST_SIZE_MATCH(xXF86DRIOpenConnectionReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -179,14 +182,14 @@ ProcXF86DRIOpenConnection(register ClientPtr client)
static int
ProcXF86DRIAuthConnection(register ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRIAuthConnectionReq);
xXF86DRIAuthConnectionReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
.authenticated = 1
};
REQUEST(xXF86DRIAuthConnectionReq);
REQUEST_SIZE_MATCH(xXF86DRIAuthConnectionReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -203,8 +206,8 @@ ProcXF86DRIAuthConnection(register ClientPtr client)
static int
ProcXF86DRICloseConnection(register ClientPtr client)
{
REQUEST(xXF86DRICloseConnectionReq);
REQUEST_SIZE_MATCH(xXF86DRICloseConnectionReq);
REQUEST_HEAD_STRUCT(xXF86DRICloseConnectionReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -218,14 +221,14 @@ ProcXF86DRICloseConnection(register ClientPtr client)
static int
ProcXF86DRIGetClientDriverName(register ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRIGetClientDriverNameReq);
xXF86DRIGetClientDriverNameReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
};
char *clientDriverName;
REQUEST(xXF86DRIGetClientDriverNameReq);
REQUEST_SIZE_MATCH(xXF86DRIGetClientDriverNameReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -252,14 +255,14 @@ ProcXF86DRIGetClientDriverName(register ClientPtr client)
static int
ProcXF86DRICreateContext(register ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRICreateContextReq);
xXF86DRICreateContextReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
};
ScreenPtr pScreen;
REQUEST(xXF86DRICreateContextReq);
REQUEST_SIZE_MATCH(xXF86DRICreateContextReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -280,8 +283,8 @@ ProcXF86DRICreateContext(register ClientPtr client)
static int
ProcXF86DRIDestroyContext(register ClientPtr client)
{
REQUEST(xXF86DRIDestroyContextReq);
REQUEST_SIZE_MATCH(xXF86DRIDestroyContextReq);
REQUEST_HEAD_STRUCT(xXF86DRIDestroyContextReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -297,6 +300,8 @@ ProcXF86DRIDestroyContext(register ClientPtr client)
static int
ProcXF86DRICreateDrawable(ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRICreateDrawableReq);
xXF86DRICreateDrawableReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
@ -304,8 +309,6 @@ ProcXF86DRICreateDrawable(ClientPtr client)
DrawablePtr pDrawable;
int rc;
REQUEST(xXF86DRICreateDrawableReq);
REQUEST_SIZE_MATCH(xXF86DRICreateDrawableReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -328,12 +331,11 @@ ProcXF86DRICreateDrawable(ClientPtr client)
static int
ProcXF86DRIDestroyDrawable(register ClientPtr client)
{
REQUEST(xXF86DRIDestroyDrawableReq);
REQUEST_HEAD_STRUCT(xXF86DRIDestroyDrawableReq);
DrawablePtr pDrawable;
int rc;
REQUEST_SIZE_MATCH(xXF86DRIDestroyDrawableReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -355,6 +357,8 @@ ProcXF86DRIDestroyDrawable(register ClientPtr client)
static int
ProcXF86DRIGetDrawableInfo(register ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRIGetDrawableInfoReq);
xXF86DRIGetDrawableInfoReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
@ -365,8 +369,6 @@ ProcXF86DRIGetDrawableInfo(register ClientPtr client)
drm_clip_rect_t *pBackClipRects;
int backX, backY, rc;
REQUEST(xXF86DRIGetDrawableInfoReq);
REQUEST_SIZE_MATCH(xXF86DRIGetDrawableInfoReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -453,6 +455,8 @@ ProcXF86DRIGetDrawableInfo(register ClientPtr client)
static int
ProcXF86DRIGetDeviceInfo(register ClientPtr client)
{
REQUEST_HEAD_STRUCT(xXF86DRIGetDeviceInfoReq);
xXF86DRIGetDeviceInfoReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
@ -460,8 +464,6 @@ ProcXF86DRIGetDeviceInfo(register ClientPtr client)
drm_handle_t hFrameBuffer;
void *pDevPrivate;
REQUEST(xXF86DRIGetDeviceInfoReq);
REQUEST_SIZE_MATCH(xXF86DRIGetDeviceInfoReq);
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
@ -536,15 +538,6 @@ ProcXF86DRIDispatch(register ClientPtr client)
}
}
static int _X_COLD
SProcXF86DRIQueryDirectRenderingCapable(register ClientPtr client)
{
REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq);
swapl(&stuff->screen);
return ProcXF86DRIQueryDirectRenderingCapable(client);
}
static int _X_COLD
SProcXF86DRIDispatch(register ClientPtr client)
{
@ -558,7 +551,7 @@ SProcXF86DRIDispatch(register ClientPtr client)
case X_XF86DRIQueryVersion:
return ProcXF86DRIQueryVersion(client);
case X_XF86DRIQueryDirectRenderingCapable:
return SProcXF86DRIQueryDirectRenderingCapable(client);
return ProcXF86DRIQueryDirectRenderingCapable(client);
default:
return DRIErrorBase + XF86DRIClientNotLocal;
}