Don't set X and Y valuators for indirect touch events

For expediency, it made sense to always have the X and Y axes set for
direct touch device event propagation. The last X and Y values are
stored internally. However, indirect device touch event propagation
does not depend on the touch's X and Y values. Thus, we don't need to
set the values for every indirect touch event.

On top of this, the previous X and Y values aren't stored for indirect
touches, so without this change the axes get erroneously set to 0.

Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Chase Douglas 2012-01-18 19:09:21 -08:00 committed by Peter Hutterer
parent 5201310559
commit e1085a0da0

View File

@ -1836,7 +1836,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid,
default: default:
return 0; return 0;
} }
if (!(flags & TOUCH_CLIENT_ID)) if (t->mode == XIDirectTouch && !(flags & TOUCH_CLIENT_ID))
{ {
if (!valuator_mask_isset(&mask, 0)) if (!valuator_mask_isset(&mask, 0))
valuator_mask_set_double(&mask, 0, valuator_mask_get_double(touchpoint.ti->valuators, 0)); valuator_mask_set_double(&mask, 0, valuator_mask_get_double(touchpoint.ti->valuators, 0));