diff options
-rw-r--r-- | Xi/xipassivegrab.c | 11 |
1 files 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; } |