From: Louis-Francis Ratté-Boulianne <l...@collabora.com> The touchpoint counting is needed regardless of what we do with the touch events, so move it out of process_touch_normal() into the caller notify_touch_cal().
This is pure refactoring. Signed-off-by: Louis-Francis Ratté-Boulianne <l...@collabora.com> Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> --- libweston/input.c | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/libweston/input.c b/libweston/input.c index 1658422c..17a0c051 100644 --- a/libweston/input.c +++ b/libweston/input.c @@ -2357,10 +2357,6 @@ process_touch_normal(struct weston_touch_device *device, switch (touch_type) { case WL_TOUCH_DOWN: - weston_compositor_idle_inhibit(ec); - - touch->num_tp++; - /* the first finger down picks the view, and all further go * to that view for the remainder of the touch session i.e. * until all touch points are up again. */ @@ -2398,17 +2394,6 @@ process_touch_normal(struct weston_touch_device *device, grab->interface->motion(grab, time, touch_id, x, y); break; case WL_TOUCH_UP: - if (touch->num_tp == 0) { - /* This can happen if we start out with one or - * more fingers on the touch screen, in which - * case we didn't get the corresponding down - * event. */ - weston_log("unmatched touch up event\n"); - break; - } - weston_compositor_idle_release(ec); - touch->num_tp--; - grab->interface->up(grab, time, touch_id); if (touch->num_tp == 0) weston_touch_set_focus(touch, NULL); @@ -2448,6 +2433,9 @@ notify_touch_cal(struct weston_touch_device *device, double x, double y, double norm_x, double norm_y, int touch_type) { + struct weston_seat *seat = device->aggregate->seat; + struct weston_touch *touch = device->aggregate; + if (touch_type != WL_TOUCH_UP) { if (weston_touch_device_can_calibrate(device)) { assert(norm_x != WESTON_INVALID_TOUCH_COORDINATE); @@ -2458,6 +2446,30 @@ notify_touch_cal(struct weston_touch_device *device, } } + /* Update touchpoints count regardless of the current mode. */ + switch (touch_type) { + case WL_TOUCH_DOWN: + weston_compositor_idle_inhibit(seat->compositor); + + touch->num_tp++; + break; + case WL_TOUCH_UP: + if (touch->num_tp == 0) { + /* This can happen if we start out with one or + * more fingers on the touch screen, in which + * case we didn't get the corresponding down + * event. */ + weston_log("unmatched touch up event\n"); + break; + } + weston_compositor_idle_release(seat->compositor); + + touch->num_tp--; + break; + default: + break; + } + process_touch_normal(device, time, touch_id, x, y, touch_type); } -- 2.16.1 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel