summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ã…dahl <jadahl@gmail.com>2022-11-15 10:47:50 +0100
committerMarge Bot <marge-bot@gnome.org>2022-12-17 20:38:23 +0000
commitd97c160122950c6b197dee64d8a145c68310df77 (patch)
tree9a8d3f0b69f5e0455a0f7628653563e57d9f0aeb
parentaa0b1fbc8890a0237737d354d1e1292f620a0a12 (diff)
downloadmutter-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.c24
-rw-r--r--src/tests/wayland-test-clients/wayland-test-client-utils.h3
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 */