diff --git a/randr/rrmonitor.c b/randr/rrmonitor.c index db33d117c..c77978e33 100644 --- a/randr/rrmonitor.c +++ b/randr/rrmonitor.c @@ -622,6 +622,8 @@ ProcRRGetMonitors(ClientPtr client) } WriteToClient(client, sizeof(xRRGetMonitorsReply), &rep); + client->pSwapReplyFunc = (ReplySwapPtr) CopySwap32Write; + for (m = 0; m < nmonitors; m++) { RRMonitorPtr monitor = &monitors[m]; xRRMonitorInfo info = { @@ -647,14 +649,8 @@ 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); - WriteToClient(client, sizeof(outputs), outputs); + WriteSwappedDataToClient(client, monitor->numOutputs * sizeof (RROutput), monitor->outputs); } RRMonitorFreeList(monitors, nmonitors);