From: raster Date: Tue, 26 Jul 2011 07:01:55 +0000 (+0000) Subject: fix timer precision handling to do what it was meant to do to begin with X-Git-Tag: accepted/2.0/20130306.224007~181^2~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=63fb1639a789f97d225117bdb2efe486b3b9b811;p=profile%2Fivi%2Fecore.git fix timer precision handling to do what it was meant to do to begin with git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@61730 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/ChangeLog b/ChangeLog index 6bd7d59..466e0de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -263,3 +263,9 @@ 2011-07-22 Mike Blumenkrantz * Added ecore_con_url_url_get + +2011-07-26 Carsten Haitzler (The Rasterman) + + * Fix timer precision handling for grouping timer ticks so + they actually do tick off together + diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c index 2c4a223..a4bc1a4 100644 --- a/src/lib/ecore/ecore_timer.c +++ b/src/lib/ecore/ecore_timer.c @@ -590,15 +590,17 @@ static inline Ecore_Timer * _ecore_timer_after_get(Ecore_Timer *base) { Ecore_Timer *timer = (Ecore_Timer *) EINA_INLIST_GET(base)->next; + Ecore_Timer *valid_timer = NULL; double maxtime = base->at + precision; - while ((timer) && ((timer->delete_me) || (timer->just_added)) && (timer->at <= maxtime)) - timer = (Ecore_Timer *) EINA_INLIST_GET(timer)->next; - - if ((!timer) || (timer->at > maxtime)) - return NULL; + while ((timer) && (timer->at < maxtime)) + { + if (!((timer->delete_me) || (timer->just_added))) + valid_timer = timer; + timer = (Ecore_Timer *) EINA_INLIST_GET(timer)->next; + } - return timer; + return valid_timer; } double @@ -612,8 +614,7 @@ _ecore_timer_next_get(void) if (!first) return -1; second = _ecore_timer_after_get(first); - if (second) - first = second; + if (second) first = second; now = ecore_loop_time_get(); in = first->at - now;