From c1d828910ad84b3d9019f0e5517c70ff32285eb5 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 31 Mar 2025 20:07:41 +0200 Subject: [PATCH] XI: directly write out X_GetSelectedExtensionEvents reply Write out X_GetSelectedExtensionEvents the reply directly (and do the swapping within the request handler) instead of going through separate callback that's having demux the replies again. Signed-off-by: Enrico Weigelt, metux IT consult --- Xi/extinit.c | 6 +----- Xi/getselev.c | 26 +++++++------------------- Xi/getselev.h | 5 ----- 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/Xi/extinit.c b/Xi/extinit.c index 65ac23848..abf1bdf9c 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -421,11 +421,7 @@ SReplyIDispatch(ClientPtr client, int len, xGrabDeviceReply * rep) { /* All we look at is the type field */ /* This is common to all replies */ - if (rep->RepType == X_GetSelectedExtensionEvents) - SRepXGetSelectedExtensionEvents(client, len, - (xGetSelectedExtensionEventsReply *) - rep); - else if (rep->RepType == X_GetDeviceDontPropagateList) + if (rep->RepType == X_GetDeviceDontPropagateList) SRepXGetDeviceDontPropagateList(client, len, (xGetDeviceDontPropagateListReply *) rep); diff --git a/Xi/getselev.c b/Xi/getselev.c index 383ab60c3..6daac08b5 100644 --- a/Xi/getselev.c +++ b/Xi/getselev.c @@ -145,7 +145,13 @@ ProcXGetSelectedExtensionEvents(ClientPtr client) ClassFromMask(aclient, others->mask[i], i, NULL, CREATE); } - WriteReplyToClient(client, sizeof(xGetSelectedExtensionEventsReply), &rep); + if (client->swapped) { + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swaps(&rep.this_client_count); + swaps(&rep.all_clients_count); + } + WriteToClient(client, sizeof(xGetSelectedExtensionEventsReply), &rep); if (total_length) { client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; @@ -154,21 +160,3 @@ ProcXGetSelectedExtensionEvents(ClientPtr client) free(buf); return Success; } - -/*********************************************************************** - * - * This procedure writes the reply for the XGetSelectedExtensionEvents function, - * if the client and server have a different byte ordering. - * - */ - -void _X_COLD -SRepXGetSelectedExtensionEvents(ClientPtr client, int size, - xGetSelectedExtensionEventsReply * rep) -{ - swaps(&rep->sequenceNumber); - swapl(&rep->length); - swaps(&rep->this_client_count); - swaps(&rep->all_clients_count); - WriteToClient(client, size, rep); -} diff --git a/Xi/getselev.h b/Xi/getselev.h index 371be1a27..bcb8ebcbb 100644 --- a/Xi/getselev.h +++ b/Xi/getselev.h @@ -36,9 +36,4 @@ int SProcXGetSelectedExtensionEvents(ClientPtr /* client */ int ProcXGetSelectedExtensionEvents(ClientPtr /* client */ ); -void SRepXGetSelectedExtensionEvents(ClientPtr /* client */ , - int /* size */ , - xGetSelectedExtensionEventsReply * /* rep */ - ); - #endif /* GETSELEV_H */