render: consolidate byte-swapping in ProcRenderCreateConicalGradient()

No need for extra functions and call tables for the few trivial lines.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult
2025-09-08 17:06:38 +02:00
committed by Enrico Weigelt
parent 05524df68b
commit 9b2d3ba167

View File

@@ -98,8 +98,6 @@ static int ProcRenderCreateConicalGradient(ClientPtr pClient);
static int ProcRenderDispatch(ClientPtr pClient);
static int SProcRenderCreateConicalGradient(ClientPtr pClient);
static int SProcRenderDispatch(ClientPtr pClient);
int (*ProcRenderVector[RenderNumberRequests]) (ClientPtr) = {
@@ -177,7 +175,7 @@ int (*SProcRenderVector[RenderNumberRequests]) (ClientPtr) = {
ProcRenderCreateSolidFill,
ProcRenderCreateLinearGradient,
ProcRenderCreateRadialGradient,
SProcRenderCreateConicalGradient};
ProcRenderCreateConicalGradient};
int RenderErrBase;
static DevPrivateKeyRec RenderClientPrivateKeyRec;
@@ -1869,7 +1867,8 @@ SingleRenderCreateRadialGradient(ClientPtr client,
}
static int
SingleRenderCreateConicalGradient(ClientPtr client)
SingleRenderCreateConicalGradient(ClientPtr client,
xRenderCreateConicalGradientReq *stuff)
{
PicturePtr pPicture;
int len;
@@ -1877,10 +1876,6 @@ SingleRenderCreateConicalGradient(ClientPtr client)
xFixed *stops;
xRenderColor *colors;
REQUEST(xRenderCreateConicalGradientReq);
REQUEST_AT_LEAST_SIZE(xRenderCreateConicalGradientReq);
LEGAL_NEW_RESOURCE(stuff->pid, client);
len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq);
@@ -1937,31 +1932,6 @@ swapStops(void *stuff, int num)
}
}
static int _X_COLD
SProcRenderCreateConicalGradient(ClientPtr client)
{
int len;
REQUEST(xRenderCreateConicalGradientReq);
REQUEST_AT_LEAST_SIZE(xRenderCreateConicalGradientReq);
swapl(&stuff->pid);
swapl(&stuff->center.x);
swapl(&stuff->center.y);
swapl(&stuff->angle);
swapl(&stuff->nStops);
len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq);
if (stuff->nStops > UINT32_MAX / (sizeof(xFixed) + sizeof(xRenderColor)))
return BadLength;
if (len != stuff->nStops * (sizeof(xFixed) + sizeof(xRenderColor)))
return BadLength;
swapStops(stuff + 1, stuff->nStops);
return ProcRenderCreateConicalGradient(client);
}
static int _X_COLD
SProcRenderDispatch(ClientPtr client)
{
@@ -2581,14 +2551,12 @@ PanoramiXRenderCreateRadialGradient(ClientPtr client,
}
static int
PanoramiXRenderCreateConicalGradient(ClientPtr client)
PanoramiXRenderCreateConicalGradient(ClientPtr client,
xRenderCreateConicalGradientReq *stuff)
{
REQUEST(xRenderCreateConicalGradientReq);
PanoramiXRes *newPict;
int result = Success;
REQUEST_AT_LEAST_SIZE(xRenderCreateConicalGradientReq);
if (!(newPict = calloc(1, sizeof(PanoramiXRes))))
return BadAlloc;
@@ -2598,7 +2566,7 @@ PanoramiXRenderCreateConicalGradient(ClientPtr client)
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
stuff->pid = newPict->info[walkScreenIdx].id;
result = SingleRenderCreateConicalGradient(client);
result = SingleRenderCreateConicalGradient(client, stuff);
if (result != Success)
break;
});
@@ -3094,10 +3062,29 @@ ProcRenderCreateRadialGradient(ClientPtr client)
static int
ProcRenderCreateConicalGradient(ClientPtr client)
{
REQUEST(xRenderCreateConicalGradientReq);
REQUEST_AT_LEAST_SIZE(xRenderCreateConicalGradientReq);
if (client->swapped) {
swapl(&stuff->pid);
swapl(&stuff->center.x);
swapl(&stuff->center.y);
swapl(&stuff->angle);
swapl(&stuff->nStops);
int len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq);
if (stuff->nStops > UINT32_MAX / (sizeof(xFixed) + sizeof(xRenderColor)))
return BadLength;
if (len != stuff->nStops * (sizeof(xFixed) + sizeof(xRenderColor)))
return BadLength;
swapStops(stuff + 1, stuff->nStops);
}
#ifdef XINERAMA
return (usePanoramiX ? PanoramiXRenderCreateConicalGradient(client)
: SingleRenderCreateConicalGradient(client));
return (usePanoramiX ? PanoramiXRenderCreateConicalGradient(client, stuff)
: SingleRenderCreateConicalGradient(client, stuff));
#else
return SingleRenderCreateConicalGradient(client);
return SingleRenderCreateConicalGradient(client, stuff);
#endif
}