summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2019-07-31 10:20:50 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2019-07-31 10:23:29 +1000
commit057fd339d1c436d93d90c1329105f21ed95de62e (patch)
tree182c86b58df7c9c05adbacd858d3425e8bca3ea1
parent5521ab03f454107176f766553f0bfbf7ab849dab (diff)
test: mix tablet events into touch arbitration tests
We keep running into the proximity timeout for these tests, especially under valgrind. To avoid this, manually intersperse the touch events with tablet events. Note that this manual loop would just work even without tablet events because we no longer have a 10ms delay between touch events as enforced by litest_touch_move_to. But let's do the right thing anyway. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--test/test-tablet.c40
1 files changed, 29 insertions, 11 deletions
diff --git a/test/test-tablet.c b/test/test-tablet.c
index 79319039..620bd6ec 100644
--- a/test/test-tablet.c
+++ b/test/test-tablet.c
@@ -4505,6 +4505,8 @@ START_TEST(touch_arbitration)
{ -1, -1 }
};
bool is_touchpad;
+ double x, y;
+ double tx, ty;
other = paired_device(dev);
if (other == LITEST_NO_DEVICE)
@@ -4520,12 +4522,18 @@ START_TEST(touch_arbitration)
litest_tablet_motion(dev, 20, 40, axes);
litest_drain_events(li);
- litest_touch_down(finger, 0, 21, 41);
- litest_touch_move_to(finger, 0, 21, 41, 80, 80, 10);
- litest_assert_empty_queue(li);
+ tx = 20;
+ ty = 40;
+ x = 21;
+ y = 41;
+ litest_touch_down(finger, 0, x, y);
- litest_tablet_motion(dev, 10, 10, axes);
- litest_tablet_motion(dev, 20, 40, axes);
+ /* We need to intersperce the touch events with tablets so we don't
+ trigger the tablet proximity timeout. */
+ for (int i = 0; i < 60; i += 5) {
+ litest_touch_move(finger, 0, x + i, y + i);
+ litest_tablet_motion(dev, tx + 0.1 * i, ty + 0.1 * i, axes);
+ }
litest_assert_only_typed_events(li,
LIBINPUT_EVENT_TABLET_TOOL_AXIS);
litest_tablet_proximity_out(dev);
@@ -5253,6 +5261,7 @@ START_TEST(tablet_rotation_left_handed_while_in_prox)
bool tablet_from, touch_from, tablet_to, touch_to;
bool enabled_from, enabled_to;
double x, y;
+ double tx, ty;
other = paired_device(tablet);
if (other == LITEST_NO_DEVICE)
@@ -5279,9 +5288,9 @@ START_TEST(tablet_rotation_left_handed_while_in_prox)
/* Tablet in-prox when setting to left-handed */
- x = 60;
- y = 60;
- litest_tablet_proximity_in(tablet, x, y, NULL);
+ tx = 60;
+ ty = 60;
+ litest_tablet_proximity_in(tablet, tx, ty, NULL);
libinput_dispatch(li);
litest_drain_events(li);
@@ -5291,7 +5300,7 @@ START_TEST(tablet_rotation_left_handed_while_in_prox)
touch_to);
/* not yet neutral, so still whatever the original was */
- verify_left_handed_tablet_motion(tablet, li, x, y, enabled_from);
+ verify_left_handed_tablet_motion(tablet, li, tx, ty, enabled_from);
litest_drain_events(li);
/* test pointer, should be left-handed already */
@@ -5303,12 +5312,21 @@ START_TEST(tablet_rotation_left_handed_while_in_prox)
x = 10;
y = 30;
litest_touch_down(finger, 0, x, y);
- litest_touch_move_to(finger, 0, x, y, x + 10, y - 10, 10);
+
+ /* We need to intersperce the touch events with tablets so we don't
+ trigger the tablet proximity timeout. */
+ for (int i = 0; i < 10; i++) {
+ litest_touch_move(finger, 0, x + i, y - i);
+ litest_tablet_motion(tablet,
+ tx + 0.1 * i, ty + 0.1 * i,
+ NULL);
+ }
+
litest_touch_up(finger, 0);
libinput_dispatch(li);
/* this will fail once we have location-based touch arbitration on
* touchpads */
- litest_assert_empty_queue(li);
+ litest_assert_only_typed_events(li, LIBINPUT_EVENT_TABLET_TOOL_AXIS);
#endif
litest_tablet_proximity_out(tablet);
libinput_dispatch(li);