From 203f59c6d3a47b0cf4be6cff7ca9ef99c9933f00 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 29 Jul 2024 17:48:36 +0200 Subject: [PATCH] randr: ProcRRGetMonitors() use SwapLongs instead of callbacks WriteSwappedDataToClient() calls a callback on each single field. We can have it easier and more efficient by just using SwapLongs() Signed-off-by: Enrico Weigelt, metux IT consult Part-of: --- randr/rrmonitor.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/randr/rrmonitor.c b/randr/rrmonitor.c index c77978e33..db33d117c 100644 --- a/randr/rrmonitor.c +++ b/randr/rrmonitor.c @@ -622,8 +622,6 @@ ProcRRGetMonitors(ClientPtr client) } WriteToClient(client, sizeof(xRRGetMonitorsReply), &rep); - client->pSwapReplyFunc = (ReplySwapPtr) CopySwap32Write; - for (m = 0; m < nmonitors; m++) { RRMonitorPtr monitor = &monitors[m]; xRRMonitorInfo info = { @@ -649,8 +647,14 @@ ProcRRGetMonitors(ClientPtr client) swapl(&info.heightInMillimeters); } + RROutput outputs[monitor->numOutputs]; + memcpy(outputs, monitor->outputs, monitor->numOutputs * sizeof (RROutput)); + + if (client->swapped) + SwapLongs(outputs, monitor->numOutputs); + WriteToClient(client, sizeof(xRRMonitorInfo), &info); - WriteSwappedDataToClient(client, monitor->numOutputs * sizeof (RROutput), monitor->outputs); + WriteToClient(client, sizeof(outputs), outputs); } RRMonitorFreeList(monitors, nmonitors);