On Tue, Apr 15, 2014 at 02:28:14PM +0200, Hans de Goede wrote: > Signed-off-by: Hans de Goede <[email protected]> > Acked-by: Peter Hutterer <[email protected]> > --- > src/evdev-mt-touchpad.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c > index 910bd2a..7333ec9 100644 > --- a/src/evdev-mt-touchpad.c > +++ b/src/evdev-mt-touchpad.c > @@ -442,7 +442,7 @@ tp_post_twofinger_scroll(struct tp_dispatch *tp, uint32_t > time) > double tmpx, tmpy; > > tp_for_each_touch(tp, t) { > - if (t->dirty) { > + if (tp_touch_active(tp, t) && t->dirty) { > nchanged++; > tp_get_delta(t, &tmpx, &tmpy); > > @@ -495,12 +495,21 @@ tp_post_twofinger_scroll(struct tp_dispatch *tp, > uint32_t time) > static int > tp_post_scroll_events(struct tp_dispatch *tp, uint32_t time) > { > + struct tp_touch *t; > + int nfingers_down = 0; > + > /* don't scroll if a clickpad is held down */ > if (tp->buttons.is_buttonpad && > (tp->buttons.state || tp->buttons.old_state)) > return 0; > > - if (tp->nfingers_down != 2) { > + /* Only count active touches for 2 finger scrolling */ > + tp_for_each_touch(tp, t) { > + if (tp_touch_active(tp, t)) > + nfingers_down++; > + } > + > + if (nfingers_down != 2) { > /* terminate scrolling with a zero scroll event to notify > * caller that it really ended now */ > if (tp->scroll.state != SCROLL_STATE_NONE) {
this is mostly unrelated to this patch but there's a bug in the current handling of the scrolling events. If a user scrolls with two fingers, then presses the button, tp_post_button_events returns 1 and we never get here, thus never terminate the scrolling with a 0 event. Cheers, Peter > _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
