From e2baf112f10b3ca9ccbf66b2648e18ee379a659c Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Thu, 25 Sep 2025 15:46:11 +0200 Subject: [PATCH] Xi: inline SProcXIBarrierReleasePointer() Signed-off-by: Enrico Weigelt, metux IT consult --- Xi/extinit.c | 2 +- Xi/handlers.h | 1 - Xi/xibarriers.c | 35 ++++++++++++----------------------- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/Xi/extinit.c b/Xi/extinit.c index ad052cb0cc..24500e9e0a 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -474,7 +474,7 @@ SProcIDispatch(ClientPtr client) case X_XIGetSelectedEvents: return SProcXIGetSelectedEvents(client); case X_XIBarrierReleasePointer: - return SProcXIBarrierReleasePointer(client); + return ProcXIBarrierReleasePointer(client); default: return BadRequest; } diff --git a/Xi/handlers.h b/Xi/handlers.h index b1fb641e7c..c84420db35 100644 --- a/Xi/handlers.h +++ b/Xi/handlers.h @@ -69,7 +69,6 @@ int ProcXUngrabDeviceButton(ClientPtr client); int ProcXUngrabDevice(ClientPtr client); int ProcXUngrabDeviceKey(ClientPtr client); -int SProcXIBarrierReleasePointer(ClientPtr client); int SProcXIGetClientPointer(ClientPtr client); int SProcXIGetSelectedEvents(ClientPtr client); int SProcXIPassiveGrabDevice(ClientPtr client); diff --git a/Xi/xibarriers.c b/Xi/xibarriers.c index 5e1471f4a4..ae9b7a8fd2 100644 --- a/Xi/xibarriers.c +++ b/Xi/xibarriers.c @@ -850,45 +850,34 @@ XIDestroyPointerBarrier(ClientPtr client, return Success; } -int _X_COLD -SProcXIBarrierReleasePointer(ClientPtr client) +int +ProcXIBarrierReleasePointer(ClientPtr client) { - xXIBarrierReleasePointerInfo *info; REQUEST(xXIBarrierReleasePointerReq); - int i; - REQUEST_AT_LEAST_SIZE(xXIBarrierReleasePointerReq); - swapl(&stuff->num_barriers); + if (client->swapped) + swapl(&stuff->num_barriers); + if (stuff->num_barriers > UINT32_MAX / sizeof(xXIBarrierReleasePointerInfo)) return BadLength; REQUEST_FIXED_SIZE(xXIBarrierReleasePointerReq, stuff->num_barriers * sizeof(xXIBarrierReleasePointerInfo)); - info = (xXIBarrierReleasePointerInfo*) &stuff[1]; - for (i = 0; i < stuff->num_barriers; i++, info++) { - swaps(&info->deviceid); - swapl(&info->barrier); - swapl(&info->eventid); + if (client->swapped) { + xXIBarrierReleasePointerInfo *info = (xXIBarrierReleasePointerInfo*) &stuff[1]; + for (int i = 0; i < stuff->num_barriers; i++, info++) { + swaps(&info->deviceid); + swapl(&info->barrier); + swapl(&info->eventid); + } } - return (ProcXIBarrierReleasePointer(client)); -} - -int -ProcXIBarrierReleasePointer(ClientPtr client) -{ int i; int err; struct PointerBarrierClient *barrier; struct PointerBarrier *b; xXIBarrierReleasePointerInfo *info; - REQUEST(xXIBarrierReleasePointerReq); - REQUEST_AT_LEAST_SIZE(xXIBarrierReleasePointerReq); - if (stuff->num_barriers > UINT32_MAX / sizeof(xXIBarrierReleasePointerInfo)) - return BadLength; - REQUEST_FIXED_SIZE(xXIBarrierReleasePointerReq, stuff->num_barriers * sizeof(xXIBarrierReleasePointerInfo)); - info = (xXIBarrierReleasePointerInfo*) &stuff[1]; for (i = 0; i < stuff->num_barriers; i++, info++) { struct PointerBarrierDevice *pbd;