From: Peter Hutterer Date: Thu, 30 Jul 2015 00:48:39 +0000 (+1000) Subject: touchpad: make gestures optional X-Git-Tag: 0.21.0~5^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6295118c8e1bd65e2ba562547cbdd2a080fb8e3f;p=platform%2Fupstream%2Flibinput.git touchpad: make gestures optional Not all multi-finger touchpads are able to reliably produce gestures, so make it optional. This patch just adds a boolean (currently always true) that gets set on touchpad init time, i.e. it is not run-time configurable. Three and four-finger gestures are filtered out in gesture_notify(), if the cap isn't set the event is discarded. For two-finger gestures we prevent a transition to PINCH, so we don't inadvertently detect a pinch gesture and then not send events. This way, a 2fg gesture is always scroll. Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede --- diff --git a/src/evdev-mt-touchpad-gestures.c b/src/evdev-mt-touchpad-gestures.c index 3b1839e4..da03c262 100644 --- a/src/evdev-mt-touchpad-gestures.c +++ b/src/evdev-mt-touchpad-gestures.c @@ -295,7 +295,7 @@ tp_gesture_twofinger_handle_state_unknown(struct tp_dispatch *tp, uint64_t time) ((dir2 & 0x80) && (dir1 & 0x01))) { tp_gesture_set_scroll_buildup(tp); return GESTURE_2FG_STATE_SCROLL; - } else { + } else if (tp->gesture.enabled) { tp_gesture_get_pinch_info(tp, &tp->gesture.initial_distance, &tp->gesture.angle, @@ -303,6 +303,8 @@ tp_gesture_twofinger_handle_state_unknown(struct tp_dispatch *tp, uint64_t time) tp->gesture.prev_scale = 1.0; return GESTURE_2FG_STATE_PINCH; } + + return GESTURE_2FG_STATE_UNKNOWN; } static enum tp_gesture_2fg_state @@ -563,6 +565,7 @@ tp_gesture_handle_state(struct tp_dispatch *tp, uint64_t time) int tp_init_gesture(struct tp_dispatch *tp) { + tp->gesture.enabled = true; tp->gesture.twofinger_state = GESTURE_2FG_STATE_NONE; libinput_timer_init(&tp->gesture.finger_count_switch_timer, diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index e110b9ae..af1cd47a 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -1918,7 +1918,8 @@ tp_init(struct tp_dispatch *tp, return -1; device->seat_caps |= EVDEV_DEVICE_POINTER; - device->seat_caps |= EVDEV_DEVICE_GESTURE; + if (tp->gesture.enabled) + device->seat_caps |= EVDEV_DEVICE_GESTURE; return 0; } diff --git a/src/evdev-mt-touchpad.h b/src/evdev-mt-touchpad.h index a7961e75..3bd84258 100644 --- a/src/evdev-mt-touchpad.h +++ b/src/evdev-mt-touchpad.h @@ -246,6 +246,7 @@ struct tp_dispatch { } accel; struct { + bool enabled; bool started; unsigned int finger_count; unsigned int finger_count_pending;