41 lines
1.5 KiB
Diff
41 lines
1.5 KiB
Diff
|
From f252f62a27f76c33b49e1d14d34c9683fa695f57 Mon Sep 17 00:00:00 2001
|
||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||
|
Date: Mon, 22 Jul 2013 13:43:07 +1000
|
||
|
Subject: [PATCH] dix: set the valuator mask to ensure XI 1.x events have data
|
||
|
|
||
|
XI 1.x only allows for first + num valuators, so if a device sends data for
|
||
|
valuators 0 and 2+ only (i.e. valuator 1 is missing) we still need to get
|
||
|
the data for that from somewhere.
|
||
|
XI 1.x uses the hack of an unset valuator mask to get the right coordinates,
|
||
|
i.e. we set the value but don't set the mask for it so XI2 events have the
|
||
|
right mask.
|
||
|
|
||
|
For an absolute device in relative mode, this broke in b28a1af55cf, the
|
||
|
value was now always 0. This wasn't visible on the cursor, only in an XI 1.x
|
||
|
client. The GIMP e.g. sees jumps to x/0 every few events.
|
||
|
|
||
|
Drop the condition introduced in b28a1af55cf, data in valuators is always
|
||
|
absolute, regardless of the mode.
|
||
|
|
||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||
|
---
|
||
|
dix/getevents.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/dix/getevents.c b/dix/getevents.c
|
||
|
index f5ab8c4..14b65ca 100644
|
||
|
--- a/dix/getevents.c
|
||
|
+++ b/dix/getevents.c
|
||
|
@@ -239,7 +239,7 @@ set_valuators(DeviceIntPtr dev, DeviceEvent *event, ValuatorMask *mask)
|
||
|
SetBit(event->valuators.mode, i);
|
||
|
event->valuators.data[i] = valuator_mask_get_double(mask, i);
|
||
|
}
|
||
|
- else if (valuator_get_mode(dev, i) == Absolute)
|
||
|
+ else
|
||
|
event->valuators.data[i] = dev->valuator->axisVal[i];
|
||
|
}
|
||
|
}
|
||
|
--
|
||
|
1.8.2.1
|
||
|
|