@@ -36,6 +36,7 @@
#include "src/shared/util.h"
#include "src/shared/tester.h"
#include "src/shared/log.h"
+#include "src/shared/timeout.h"
#define COLOR_OFF "\x1B[0m"
#define COLOR_BLACK "\x1B[0;30m"
@@ -126,7 +127,7 @@ static void test_destroy(gpointer data)
struct test_case *test = data;
if (test->timeout_id > 0)
- g_source_remove(test->timeout_id);
+ timeout_remove(test->timeout_id);
if (test->teardown_id > 0)
g_source_remove(test->teardown_id);
@@ -429,7 +430,7 @@ static gboolean teardown_callback(gpointer user_data)
return FALSE;
}
-static gboolean test_timeout(gpointer user_data)
+static bool test_timeout(gpointer user_data)
{
struct test_case *test = user_data;
@@ -470,8 +471,9 @@ static void next_test_case(void)
test->start_time = g_timer_elapsed(test_timer, NULL);
if (test->timeout > 0)
- test->timeout_id = g_timeout_add_seconds(test->timeout,
- test_timeout, test);
+ test->timeout_id = timeout_add_seconds(test->timeout,
+ test_timeout, test,
+ NULL);
test->stage = TEST_STAGE_PRE_SETUP;
@@ -542,7 +544,7 @@ void tester_pre_setup_failed(void)
return;
if (test->timeout_id > 0) {
- g_source_remove(test->timeout_id);
+ timeout_remove(test->timeout_id);
test->timeout_id = 0;
}
@@ -583,7 +585,7 @@ void tester_setup_failed(void)
test->stage = TEST_STAGE_POST_TEARDOWN;
if (test->timeout_id > 0) {
- g_source_remove(test->timeout_id);
+ timeout_remove(test->timeout_id);
test->timeout_id = 0;
}
@@ -606,7 +608,7 @@ static void test_result(enum test_result result)
return;
if (test->timeout_id > 0) {
- g_source_remove(test->timeout_id);
+ timeout_remove(test->timeout_id);
test->timeout_id = 0;
}
@@ -101,3 +101,9 @@ void timeout_remove(unsigned int id)
if (to)
l_timeout_remove(to);
}
+
+unsigned int timeout_add_seconds(unsigned int timeout, timeout_func_t func,
+ void *user_data, timeout_destroy_func_t destroy)
+{
+ return timeout_add(timeout * 1000, func, user_data, destroy);
+}
@@ -71,3 +71,30 @@ void timeout_remove(unsigned int id)
if (source)
g_source_destroy(source);
}
+
+unsigned int timeout_add_seconds(unsigned int timeout, timeout_func_t func,
+ void *user_data, timeout_destroy_func_t destroy)
+{
+ struct timeout_data *data;
+ guint id;
+
+ data = g_try_new0(struct timeout_data, 1);
+ if (!data)
+ return 0;
+
+ data->func = func;
+ data->destroy = destroy;
+ data->user_data = user_data;
+
+ if (!timeout)
+ id = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, timeout_callback,
+ data, timeout_destroy);
+ else
+ id = g_timeout_add_seconds_full(G_PRIORITY_DEFAULT, timeout,
+ timeout_callback, data,
+ timeout_destroy);
+ if (!id)
+ g_free(data);
+
+ return id;
+}
@@ -71,3 +71,9 @@ void timeout_remove(unsigned int id)
mainloop_remove_timeout((int) id);
}
+
+unsigned int timeout_add_seconds(unsigned int timeout, timeout_func_t func,
+ void *user_data, timeout_destroy_func_t destroy)
+{
+ return timeout_add(timeout * 1000, func, user_data, destroy);
+}
@@ -16,3 +16,6 @@ typedef void (*timeout_destroy_func_t)(void *user_data);
unsigned int timeout_add(unsigned int timeout, timeout_func_t func,
void *user_data, timeout_destroy_func_t destroy);
void timeout_remove(unsigned int id);
+
+unsigned int timeout_add_seconds(unsigned int timeout, timeout_func_t func,
+ void *user_data, timeout_destroy_func_t destroy);