input: move touchpoint counting up

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_normalized().

This is pure refactoring.

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
v1 Tested-by: Matt Hoosier <matt.hoosier@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
dev
Louis-Francis Ratté-Boulianne 7 years ago committed by Pekka Paalanen
parent f406253d3c
commit 813a06e455
  1. 42
      libweston/input.c

@ -2359,10 +2359,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. */
@ -2400,17 +2396,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);
@ -2450,6 +2435,9 @@ notify_touch_normalized(struct weston_touch_device *device,
const struct weston_point2d_device_normalized *norm,
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 != NULL);
@ -2457,6 +2445,30 @@ notify_touch_normalized(struct weston_touch_device *device,
assert(norm == NULL);
}
/* 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);
}

Loading…
Cancel
Save