Avoid crash on button events on device without valuators.
Backport of 2416ee4a01
.
Signed-off-by: Michal Suchanek <hramrach@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
db9620c022
commit
240cd0675b
|
@ -198,9 +198,11 @@ set_valuators(DeviceIntPtr dev, DeviceEvent* event, ValuatorMask *mask)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!dev->valuator)
|
||||||
|
return;
|
||||||
/* Set the data to the previous value for unset absolute axes. The values
|
/* 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. */
|
* 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))
|
if (valuator_mask_isset(mask, i))
|
||||||
{
|
{
|
||||||
|
@ -640,7 +642,7 @@ clipAxis(DeviceIntPtr pDev, int axisNum, int *val)
|
||||||
{
|
{
|
||||||
AxisInfoPtr axis;
|
AxisInfoPtr axis;
|
||||||
|
|
||||||
if (axisNum >= pDev->valuator->numAxes)
|
if (!pDev->valuator || axisNum >= pDev->valuator->numAxes)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
axis = pDev->valuator->axes + axisNum;
|
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_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;
|
int scaled;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue