discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d5a4fba118d0642698919f369c82128ff81a09ed
commit d5a4fba118d0642698919f369c82128ff81a09ed Author: Mike Blumenkrantz <[email protected]> Date: Tue Jun 12 10:52:12 2018 -0400 tests: improve ecore timer test code Summary: a stack variable was incorrectly used here, along with some lazy timing calcs which did not accurately measure the time for each timer iteration, resulting in a test which intermittently failed in some cases fix T6878 Reviewers: stefan_schmidt, bu5hm4n, ManMower Reviewed By: ManMower Subscribers: ManMower, cedric, #committers Tags: #efl Maniphest Tasks: T6878 Differential Revision: https://phab.enlightenment.org/D6256 --- src/tests/ecore/ecore_test_timer.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/tests/ecore/ecore_test_timer.c b/src/tests/ecore/ecore_test_timer.c index e1ffc8f4a8..b7661d0043 100644 --- a/src/tests/ecore/ecore_test_timer.c +++ b/src/tests/ecore/ecore_test_timer.c @@ -174,31 +174,36 @@ typedef struct _Test_Inside_Call { Ecore_Timer *t; double start; + int it; } Test_Inside_Call; static Eina_Bool _timeri_cb(void *data) { - static int it = 5; Test_Inside_Call *c = data; - fail_if(fabs(((ecore_time_get() - c->start) / (6 - it)) - 0.011) > 0.01); + fail_if(fabs((ecore_time_get() - c->start) - 0.011) > 0.01); ecore_timer_reset(c->t); + c->start = ecore_time_get(); - it--; + c->it--; - if (it == 0) ecore_main_loop_quit(); - return it != 0; + if (c->it > 0) return EINA_TRUE; + free(c); + ecore_main_loop_quit(); + return EINA_FALSE; } EFL_START_TEST(ecore_test_timer_inside_call) { - Test_Inside_Call c; + Test_Inside_Call *c; - c.start = ecore_time_get(); - c.t = ecore_timer_add(0.01, _timeri_cb, &c); + c = malloc(sizeof(Test_Inside_Call)); + c->start = ecore_time_get(); + c->it = 5; + c->t = ecore_timer_add(0.01, _timeri_cb, c); - fail_if(!c.t, "Error add timer\n"); + fail_if(!c->t, "Error add timer\n"); ecore_main_loop_begin(); } --
