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>
This commit is contained in:
parent
f406253d3c
commit
813a06e455
@ -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…
Reference in New Issue
Block a user