diff options
Diffstat (limited to 'tests/common/test_timers.c')
| -rw-r--r-- | tests/common/test_timers.c | 11 |
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); |
