summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Koch <tobias.koch@nokia.com>2010-09-29 18:03:30 +0300
committerPeter Hutterer <peter.hutterer@who-t.net>2010-10-13 07:51:33 +1000
commit109ec12489f050e537d26eed2e60c6d97eb7439f (patch)
treeb8b54fa6c4d6e63e810772300ef0ef493478cd75
parent809ceed85bb577d4bbf80f2d84382375c65b9fbe (diff)
downloadxorg-lib-libXtst-109ec12489f050e537d26eed2e60c6d97eb7439f.tar.gz
Allow more than 6 axes to be sent.
From: Tobias Koch <tobias.koch@nokia.com> If the number of axes exceeds 6, X server will return BadValue for XTestFakeInput because the number of axes in a single DeviceValuator event is incorrectly set to the total number of axes. Signed-off-by: Tobias Koch <tobias.koch@nokia.com> Reviewed-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--src/XTest.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/XTest.c b/src/XTest.c
index 6a44e60..76193a1 100644
--- a/src/XTest.c
+++ b/src/XTest.c
@@ -265,12 +265,10 @@ send_axes(
req->length += ((n_axes + 5) / 6) * (SIZEOF(xEvent) >> 2);
ev.type = XI_DeviceValuator + (long)info->data;
ev.deviceid = dev->device_id;
- ev.num_valuators = n_axes;
ev.first_valuator = first_axis;
while (n_axes > 0) {
- n = n_axes;
- if (n > 6)
- n = 6;
+ n = n_axes > 6 ? 6 : n_axes;
+ ev.num_valuators = n;
switch (n) {
case 6:
ev.valuator5 = *(axes+5);