Skip to content

touchpad: ignore motion speed for hovering touches

tp_detect_thumb_while_moving() assumes that of the 2 fingers down, at least one must be in TOUCH_UPDATE, otherwise we wouldn't have a speed to analyze for thumb.

If a touch starts in HOVERING and exceeds the speed limit, we were previously increasing the 'exceeded count'. This later leads to an assert() in tp_detect_thumb_while_moving() when the second finger comes down because although we have multiple fingers, none of them are in TOUCH_UPDATE.

This only happens when fingers 2 and 3 come down in the same event frame, because then we have nfingers_down at 2 (the hovering one doesn't count) but we don't yet have a finger in TOUCH_UPDATE.

Fix this twofold, first by now calculating the speed on anything but TOUCH_UPDATE. And second by force-resetting the speed count on TOUCH_BEGIN/TOUCH_END so we definitely cover all the hover transitions.

Fixes #150 (closed)

Merge request reports