diff options
author | Jonas Ã…dahl <jadahl@gmail.com> | 2022-11-15 10:47:50 +0100 |
---|---|---|
committer | Marge Bot <marge-bot@gnome.org> | 2022-12-17 20:38:23 +0000 |
commit | d97c160122950c6b197dee64d8a145c68310df77 (patch) | |
tree | 9a8d3f0b69f5e0455a0f7628653563e57d9f0aeb | |
parent | aa0b1fbc8890a0237737d354d1e1292f620a0a12 (diff) | |
download | mutter-d97c160122950c6b197dee64d8a145c68310df77.tar.gz |
tests/wayland-test-client-utils: Add helper to wait for event
Useful for synchronization.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2770>
-rw-r--r-- | src/tests/wayland-test-clients/wayland-test-client-utils.c | 24 | ||||
-rw-r--r-- | src/tests/wayland-test-clients/wayland-test-client-utils.h | 3 |
2 files changed, 27 insertions, 0 deletions
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 */ |