mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 08:04:30 +00:00
Xi: ProcXIGetProperty(): use x_rpcbuf_t
Use x_rpcbuf_t for reply payload assembly and byte-swap, instead of writing in little pieces via complicated callbacks. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
committed by
Enrico Weigelt
parent
232c8d97f8
commit
9b32a62d04
@@ -1178,23 +1178,29 @@ ProcXIGetProperty(ClientPtr client)
|
||||
swapl(&rep.bytes_after);
|
||||
swapl(&rep.num_items);
|
||||
}
|
||||
WriteToClient(client, sizeof(xXIGetPropertyReply), &rep);
|
||||
|
||||
x_rpcbuf_t rpcbuf = { .swapped = client->swapped, .err_clear = TRUE };
|
||||
|
||||
if (length) {
|
||||
switch (rep.format) {
|
||||
switch (format) {
|
||||
case 32:
|
||||
client->pSwapReplyFunc = (ReplySwapPtr) CopySwap32Write;
|
||||
x_rpcbuf_write_CARD32s(&rpcbuf, (CARD32*)data, length / 4);
|
||||
break;
|
||||
case 16:
|
||||
client->pSwapReplyFunc = (ReplySwapPtr) CopySwap16Write;
|
||||
x_rpcbuf_write_CARD16s(&rpcbuf, (CARD16*)data, length / 2);
|
||||
break;
|
||||
default:
|
||||
client->pSwapReplyFunc = (ReplySwapPtr) WriteToClient;
|
||||
x_rpcbuf_write_CARD8s(&rpcbuf, (CARD8*)data, length);
|
||||
break;
|
||||
}
|
||||
WriteSwappedDataToClient(client, length, data);
|
||||
}
|
||||
|
||||
if (rpcbuf.error)
|
||||
return BadAlloc;
|
||||
|
||||
WriteToClient(client, sizeof(xXIGetPropertyReply), &rep);
|
||||
WriteRpcbufToClient(client, &rpcbuf);
|
||||
|
||||
/* delete the Property */
|
||||
if (stuff->delete && (rep.bytes_after == 0)) {
|
||||
XIPropertyPtr prop, *prev;
|
||||
|
||||
Reference in New Issue
Block a user