Message ID | 20210316171836.28501-2-frederic.danis@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | adapter: Fix discovery trigger for 0 second delay | expand |
This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=449327 ---Test result--- ############################## Test: CheckPatch - PASS ############################## Test: CheckGitLint - PASS ############################## Test: CheckBuild - PASS ############################## Test: MakeCheck - PASS --- Regards, Linux Bluetooth
Hi Frédéric, On Tue, Mar 16, 2021 at 10:26 AM Frédéric Danis <frederic.danis@collabora.com> wrote: > > g_timeout_add_seconds() call doesn't ensure the time for the first call of > the timer if the delay is less or equal to 1 second. > In case of a 0 delay call g_idle_add() instead of g_timeout_add_seconds(). > --- > src/shared/tester.c | 16 +++++++++------- > src/shared/timeout-ell.c | 6 ++++++ > src/shared/timeout-glib.c | 27 +++++++++++++++++++++++++++ > src/shared/timeout-mainloop.c | 6 ++++++ > src/shared/timeout.h | 3 +++ > 5 files changed, 51 insertions(+), 7 deletions(-) > > diff --git a/src/shared/tester.c b/src/shared/tester.c > index af33a79cd..c07cbc11c 100644 > --- a/src/shared/tester.c > +++ b/src/shared/tester.c > @@ -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; > } > > diff --git a/src/shared/timeout-ell.c b/src/shared/timeout-ell.c > index 023364069..6416d8590 100644 > --- a/src/shared/timeout-ell.c > +++ b/src/shared/timeout-ell.c > @@ -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); > +} > diff --git a/src/shared/timeout-glib.c b/src/shared/timeout-glib.c > index 8bdb7a662..3268d480c 100644 > --- a/src/shared/timeout-glib.c > +++ b/src/shared/timeout-glib.c > @@ -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; > +} > diff --git a/src/shared/timeout-mainloop.c b/src/shared/timeout-mainloop.c > index 5ffa65c2a..9be803cda 100644 > --- a/src/shared/timeout-mainloop.c > +++ b/src/shared/timeout-mainloop.c > @@ -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); > +} > diff --git a/src/shared/timeout.h b/src/shared/timeout.h > index 7e22345dd..0945c3318 100644 > --- a/src/shared/timeout.h > +++ b/src/shared/timeout.h > @@ -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); > -- > 2.18.0 Applied, note that I changed the commit message a little bit.
diff --git a/src/shared/tester.c b/src/shared/tester.c index af33a79cd..c07cbc11c 100644 --- a/src/shared/tester.c +++ b/src/shared/tester.c @@ -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; } diff --git a/src/shared/timeout-ell.c b/src/shared/timeout-ell.c index 023364069..6416d8590 100644 --- a/src/shared/timeout-ell.c +++ b/src/shared/timeout-ell.c @@ -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); +} diff --git a/src/shared/timeout-glib.c b/src/shared/timeout-glib.c index 8bdb7a662..3268d480c 100644 --- a/src/shared/timeout-glib.c +++ b/src/shared/timeout-glib.c @@ -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; +} diff --git a/src/shared/timeout-mainloop.c b/src/shared/timeout-mainloop.c index 5ffa65c2a..9be803cda 100644 --- a/src/shared/timeout-mainloop.c +++ b/src/shared/timeout-mainloop.c @@ -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); +} diff --git a/src/shared/timeout.h b/src/shared/timeout.h index 7e22345dd..0945c3318 100644 --- a/src/shared/timeout.h +++ b/src/shared/timeout.h @@ -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);