(cleanup/xext-xres) Xext: xres: ProcXResQueryClientResources() simplify payload write out

Collect the few bits in a local array, so one WriteToClient() call is
sufficient. That's also easing further simplifications in upcoming commits.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-07-17 13:18:10 +02:00
parent 041da82154
commit 6107438647

View File

@ -314,10 +314,13 @@ ProcXResQueryClientResources(ClientPtr client)
FindAllClientResources(resClient, ResFindAllRes, counts); FindAllClientResources(resClient, ResFindAllRes, counts);
int num_types = 0; int cnt[lastResourceType + 1];
for (int i = 0; i <= lastResourceType; i++) {
if (counts[i]) for (i = 0; i <= lastResourceType; i++) {
if (counts[i]) {
cnt[num_types] = counts[i];
num_types++; num_types++;
}
} }
xXResQueryClientResourcesReply rep = { xXResQueryClientResourcesReply rep = {
@ -332,10 +335,11 @@ ProcXResQueryClientResources(ClientPtr client)
swapl(&rep.num_types); swapl(&rep.num_types);
} }
WriteToClient(client, sizeof(xXResQueryClientResourcesReply), &rep); xXResType scratch[num_types];
if (num_types) { for (i = 0; i < num_types; i++) {
xXResType scratch; scratch[i].resource_type = resourceTypeAtom(i + 1);
scratch[i].count = cnt[i];
for (int i = 0; i < lastResourceType; i++) { for (int i = 0; i < lastResourceType; i++) {
if (!counts[i]) if (!counts[i])
@ -352,8 +356,9 @@ ProcXResQueryClientResources(ClientPtr client)
} }
} }
WriteToClient(client, sizeof(xXResQueryClientResourcesReply), &rep);
WriteToClient(client, sizeof(scratch), scratch);
free(counts); free(counts);
return Success; return Success;
} }