[PATCH weston 18/25] input: move touchpoint counting up
Pekka Paalanen
ppaalanen at gmail.com
Fri Mar 23 12:00:58 UTC 2018
From: Louis-Francis Ratté-Boulianne <lfrb at 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 <lfrb at collabora.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen at 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
More information about the wayland-devel
mailing list