summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2010-01-05 13:15:25 +1000
committerKeith Packard <keithp@keithp.com>2010-01-05 14:01:51 -0800
commit6f265d55a61f9be323583b8acacae783be72bda9 (patch)
treeb728534f3a168813197ce54fac94bfa4bbfc8663
parent326429badfc76885e4652ddc72860810c0e8d102 (diff)
dix: don't update the slave coordinates from the VCK.
A keyboard event from a device with both valuators and keys will be posted through the VCK. In this case, do not update the slave device coordinates from the VCK - they're always 0/0. Leave them as-is, for the next pointer event will continue where it left. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--dix/getevents.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/dix/getevents.c b/dix/getevents.c
index 2df32e8f5..bfde2e93f 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -630,9 +630,12 @@ updateFromMaster(EventListPtr events, DeviceIntPtr dev, int type, int *num_event
if (master && master->last.slave != dev)
{
CreateClassesChangedEvent(events, master, dev, type);
- updateSlaveDeviceCoords(master, dev);
+ if (IsPointerDevice(master))
+ {
+ updateSlaveDeviceCoords(master, dev);
+ master->last.numValuators = dev->last.numValuators;
+ }
master->last.slave = dev;
- master->last.numValuators = dev->last.numValuators;
(*num_events)++;
events++;
}