From 60b08e013dd1e971f82e5bc8708d3f120c217497 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 9 Mar 2011 10:44:48 +1000 Subject: [PATCH] Xi: don't swap the status byte in the XIPassiveGrab replies Reported-by: Julien Cristau Signed-off-by: Peter Hutterer Reviewed-by: Daniel Stone --- Xi/xipassivegrab.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c index 5b4cc4610..ae4343344 100644 --- a/Xi/xipassivegrab.c +++ b/Xi/xipassivegrab.c @@ -43,6 +43,7 @@ #include "exevents.h" #include "xipassivegrab.h" #include "dixgrabs.h" +#include "misc.h" int SProcXIPassiveGrabDevice(ClientPtr client) @@ -87,6 +88,7 @@ ProcXIPassiveGrabDevice(ClientPtr client) GrabParameters param; void *tmp; int mask_len; + int n; REQUEST(xXIPassiveGrabDeviceReq); REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq); @@ -195,6 +197,9 @@ ProcXIPassiveGrabDevice(ClientPtr client) info->status = status; info->modifiers = *modifiers; + if (client->swapped) + swapl(&info->modifiers, n); + rep.num_modifiers++; rep.length += bytes_to_int32(sizeof(xXIGrabModifierInfo)); } @@ -202,10 +207,8 @@ ProcXIPassiveGrabDevice(ClientPtr client) WriteReplyToClient(client, sizeof(rep), &rep); if (rep.num_modifiers) - { - client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; - WriteSwappedDataToClient(client, rep.length * 4, (char*)modifiers_failed); - } + WriteToClient(client, rep.length * 4, (char*)modifiers_failed); + free(modifiers_failed); return ret; }