summaryrefslogtreecommitdiff
path: root/tests/common/test_timers.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common/test_timers.c')
-rw-r--r--tests/common/test_timers.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/common/test_timers.c b/tests/common/test_timers.c
index d02bfe9..4e95c5a 100644
--- a/tests/common/test_timers.c
+++ b/tests/common/test_timers.c
@@ -264,6 +264,17 @@ static void test_surface_timers(void)
yasl_display_dispatch(d, 10);
assert(sctx.count == count_before);
+ /* A fired one-shot surface timer is retired, as a loop timer is. Many
+ * of them stay retired after the surface's id list compacts. */
+ for (int i = 0; i < 64; i++) {
+ struct test_ctx octx = {0};
+ octx.id = yasl_surface_add_timer(s, 1000000ull, oneshot_cb, &octx);
+ assert(octx.id > 0);
+ while (octx.count == 0)
+ yasl_display_dispatch(d, 50);
+ assert(!yasl_surface_del_timer(s, octx.id));
+ }
+
/* Surface timer auto-cleanup on surface destruction */
struct test_ctx sctx2 = {0};
sctx2.id = yasl_surface_add_timer(s, 2000000ull, surface_timer_repeat_cb, &sctx2);