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();
 }

-- 


Reply via email to