diff options
Diffstat (limited to 'glib')
-rw-r--r-- | glib/tests/mainloop.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/glib/tests/mainloop.c b/glib/tests/mainloop.c index 105bec87e..c18da94fc 100644 --- a/glib/tests/mainloop.c +++ b/glib/tests/mainloop.c @@ -2349,6 +2349,7 @@ test_maincontext_timeout_once (void) { guint counter = 0, check_counter = 0; guint source_id; + gint64 t; GSource *source; g_test_summary ("Test g_timeout_add_once() works"); @@ -2360,14 +2361,18 @@ test_maincontext_timeout_once (void) /* Iterating the main context should dispatch the source, though we have to block. */ g_assert_cmpuint (counter, ==, 0); - g_main_context_iteration (NULL, TRUE); + t = g_get_monotonic_time (); + while (g_get_monotonic_time () - t < 50 * 1000 && counter == 0) + g_main_context_iteration (NULL, TRUE); g_assert_cmpuint (counter, ==, 1); /* Iterating it again should not dispatch the source again. We add a second * timeout and block until that is dispatched. Given the ordering guarantees, * we should then know whether the first one would have re-dispatched by then. */ g_timeout_add_once (30 /* ms */, once_cb, &check_counter); - g_main_context_iteration (NULL, TRUE); + t = g_get_monotonic_time (); + while (g_get_monotonic_time () - t < 50 * 1000 && check_counter == 0) + g_main_context_iteration (NULL, TRUE); g_assert_cmpuint (check_counter, ==, 1); g_assert_cmpuint (counter, ==, 1); g_assert_true (g_source_is_destroyed (source)); |