Compare commits

...

4 Commits

Author SHA1 Message Date
Enrico Weigelt, metux IT consult e3f795779b ProcRRGetCrtcTransform() part 2
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-02-27 12:09:10 +01:00
Enrico Weigelt, metux IT consult dc76cfc769 ProcRRGetCrtcTransform() split part 1
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-02-27 11:13:54 +01:00
Enrico Weigelt, metux IT consult 4132f66be6 Revert "randr: ProcRRGetCrtcTransform(): split reply header and payload"
This reverts commit c6f1b8a735.
2025-02-27 10:45:01 +01:00
Enrico Weigelt, metux IT consult 94ddca562a Revert "randr: fix RRGetCrtcTransform reply length"
This reverts commit 0ca5aaba50.
2025-02-27 10:44:50 +01:00

View File

@ -1755,6 +1755,8 @@ ProcRRSetCrtcTransform(ClientPtr client)
filter, nbytes, params, nparams);
}
#define CrtcTransformExtra (SIZEOF(xRRGetCrtcTransformReply) - 32)
static int
transform_filter_length(RRTransformPtr transform)
{
@ -1812,6 +1814,7 @@ ProcRRGetCrtcTransform(ClientPtr client)
RRCrtcPtr crtc;
int nextra;
RRTransformPtr current, pending;
char *extra;
REQUEST_SIZE_MATCH(xRRGetCrtcTransformReq);
VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess);
@ -1822,16 +1825,14 @@ ProcRRGetCrtcTransform(ClientPtr client)
nextra = (transform_filter_length(pending) +
transform_filter_length(current));
char *extra_buf = calloc(1, nextra);
if (!extra_buf)
extra = calloc(1, nextra);
if (!extra)
return BadAlloc;
char *extra = extra_buf;
xRRGetCrtcTransformReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
.length = bytes_to_int32(sizeof(xRRGetCrtcTransformReply) - sizeof(xReq) + nextra),
.length = bytes_to_int32(CrtcTransformExtra + nextra),
.hasTransforms = crtc->transforms,
};
@ -1850,8 +1851,8 @@ ProcRRGetCrtcTransform(ClientPtr client)
swapl(&rep.length);
}
WriteToClient(client, sizeof(xRRGetCrtcTransformReply), &rep);
WriteToClient(client, nextra, extra_buf);
free(extra_buf);
WriteToClient(client, nextra, extra);
free(extra);
return Success;
}