Input: GetPointerEvents: Deny events from devices without valuators

For some reason, my keyboard has 25 mouse buttons, but zero valuators.  This
causes GPE to blow up spectacularly, trying to get (and set) co-ordinates from
devices without valuators.  For now, just prevent this from ever happening,
and whack a dirty great FIXME in.
This commit is contained in:
Daniel Stone 2007-08-01 01:08:26 +03:00
parent 7c9e8fd56e
commit 4d238c5c67

View File

@ -499,14 +499,18 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
if ((type == ButtonPress || type == ButtonRelease) && !pDev->button)
return 0;
/* FIXME: I guess it should, in theory, be possible to post button events
* from devices without valuators. */
if (!pDev->valuator)
return 0;
if (!coreOnly && pDev->coreEvents)
num_events = 2;
else
num_events = 1;
if (type == MotionNotify && num_valuators <= 0) {
if (type == MotionNotify && num_valuators <= 0)
return 0;
}
/* Do we need to send a DeviceValuator event? */
if (!coreOnly && sendValuators) {