diff options
author | Matthieu Herrb <matthieu.herrb@laas.fr> | 2012-04-28 19:08:11 +0200 |
---|---|---|
committer | Matthieu Herrb <matthieu.herrb@laas.fr> | 2012-04-28 19:08:11 +0200 |
commit | 24f8ed779f8f91e7a354ca249196b5cb62c9a7aa (patch) | |
tree | cb7b693b751aa6fb41a436470dd048af68ba4d6f | |
parent | 3db846f9a8c45cb970884258dcbd14b144d2952b (diff) | |
parent | 240cd0675b019f90bec481a17f3bf8ea99efe972 (diff) |
Merge remote-tracking branch 'origin/server-1.11-branch' into obsd-server-1.11-branchobsd-server-1.11-branch
-rw-r--r-- | dix/getevents.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/dix/getevents.c b/dix/getevents.c index 058fa8ac7..bd8fd220e 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -198,9 +198,11 @@ set_valuators(DeviceIntPtr dev, DeviceEvent* event, ValuatorMask *mask) { int i; + if (!dev->valuator) + return; /* Set the data to the previous value for unset absolute axes. The values * may be used when sent as part of an XI 1.x valuator event. */ - for (i = 0; i < valuator_mask_size(mask); i++) + for (i = 0; (i < valuator_mask_size(mask)) && (i < dev->valuator->numAxes); i++) { if (valuator_mask_isset(mask, i)) { @@ -640,7 +642,7 @@ clipAxis(DeviceIntPtr pDev, int axisNum, int *val) { AxisInfoPtr axis; - if (axisNum >= pDev->valuator->numAxes) + if (!pDev->valuator || axisNum >= pDev->valuator->numAxes) return; axis = pDev->valuator->axes + axisNum; @@ -1185,7 +1187,8 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, int buttons if (flags & POINTER_ABSOLUTE) { - if (flags & POINTER_SCREEN) /* valuators are in screen coords */ + if ((flags & POINTER_SCREEN) && /* valuators are in screen coords */ + pDev->valuator && (pDev->valuator->numAxes >= 2)) { int scaled; |