From d97c160122950c6b197dee64d8a145c68310df77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 15 Nov 2022 10:47:50 +0100 Subject: tests/wayland-test-client-utils: Add helper to wait for event Useful for synchronization. Part-of: --- .../wayland-test-client-utils.c | 24 ++++++++++++++++++++++ .../wayland-test-client-utils.h | 3 +++ 2 files changed, 27 insertions(+) diff --git a/src/tests/wayland-test-clients/wayland-test-client-utils.c b/src/tests/wayland-test-clients/wayland-test-client-utils.c index d00a2fb5b..6021ad5be 100644 --- a/src/tests/wayland-test-clients/wayland-test-client-utils.c +++ b/src/tests/wayland-test-clients/wayland-test-client-utils.c @@ -446,3 +446,27 @@ wait_for_view_verified (WaylandDisplay *display, g_error ("%s: Failed to dispatch Wayland display", __func__); } } + +static void +on_sync_event (WaylandDisplay *display, + uint32_t serial, + uint32_t *expected_serial) +{ + g_assert_cmpuint (serial, ==, *expected_serial); + *expected_serial = serial + 1; +} + +void +wait_for_sync_event (WaylandDisplay *display, + uint32_t serial) +{ + uint32_t expected_serial = serial; + + g_signal_connect (display, "sync-event", G_CALLBACK (on_sync_event), + &expected_serial); + while (expected_serial != serial + 1) + { + if (wl_display_dispatch (display->display) == -1) + g_error ("%s: Failed to dispatch Wayland display", __func__); + } +} diff --git a/src/tests/wayland-test-clients/wayland-test-client-utils.h b/src/tests/wayland-test-clients/wayland-test-client-utils.h index 114e1098d..d98040c38 100644 --- a/src/tests/wayland-test-clients/wayland-test-client-utils.h +++ b/src/tests/wayland-test-clients/wayland-test-client-utils.h @@ -66,4 +66,7 @@ void wait_for_effects_completed (WaylandDisplay *display, void wait_for_view_verified (WaylandDisplay *display, int sequence); +void wait_for_sync_event (WaylandDisplay *display, + uint32_t serial); + #endif /* WAYLAND_TEST_CLIENT_UTILS_H */ -- cgit v1.2.1