Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore


Modified Files:
      Tag: SPLIT
        ecore_private.h ecore_timer.c 


Log Message:


demo is looking a litle nicer... :)
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/Attic/ecore_private.h,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -3 -r1.1.2.9 -r1.1.2.10
--- ecore_private.h     20 Feb 2003 06:56:40 -0000      1.1.2.9
+++ ecore_private.h     23 Feb 2003 02:00:56 -0000      1.1.2.10
@@ -65,6 +65,7 @@
    ECORE_MAGIC;
    double       in;
    double       at;
+   char         just_added : 1;
    int        (*func) (void *data);
    void        *data;
 };
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/Attic/ecore_timer.c,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -3 -r1.1.2.5 -r1.1.2.6
--- ecore_timer.c       20 Feb 2003 06:56:40 -0000      1.1.2.5
+++ ecore_timer.c       23 Feb 2003 02:00:57 -0000      1.1.2.6
@@ -78,10 +78,18 @@
 double
 _ecore_timer_next_get(void)
 {
+   Ecore_List *l;   
    double now;
    double in;
    
    if (!timers) return -1;
+   for (l = (Ecore_List *)timers; l; l = l->next)
+     {
+       Ecore_Timer *timer;
+       
+       timer = (Ecore_Timer *)l;
+       timer->just_added = 0;
+     }
    now = ecore_time_get();
    in = timers->at - now;
    if (in < 0) in = 0;
@@ -91,18 +99,26 @@
 int
 _ecore_timer_call(double when)
 {
+   Ecore_List *l;   
    Ecore_Timer *timer;
    
    if (!timers) return 0;
-   if (timers->at > when) return 0;
-   timer = timers;
-   timers = _ecore_list_remove(timers, timer);
-   _ecore_timer_call(when);
-   if (timer->func(timer->data))
-     _ecore_timer_set(timer, timer->at + timer->in, timer->in, timer->func, 
timer->data);
-   else
-     free(timer);
-   return 1;
+   for (l = (Ecore_List *)timers; l; l = l->next)
+     {
+       timer = (Ecore_Timer *)l;
+       if ((timer->at <= when) &&
+           (!timer->just_added))
+         {
+            timers = _ecore_list_remove(timers, timer);
+            _ecore_timer_call(when);
+            if (timer->func(timer->data))
+              _ecore_timer_set(timer, timer->at + timer->in, timer->in, timer->func, 
timer->data);
+            else
+              free(timer);
+            return 1;
+         }
+     }
+   return 0;
 }  
 
 static void
@@ -114,6 +130,7 @@
    timer->in = in;
    timer->func = func;
    timer->data = data;
+   timer->just_added = 1;
    if (timers)
      {
        for (l = ((Ecore_List *)(timers))->last; l; l = l->prev)




-------------------------------------------------------
This SF.net email is sponsored by: SlickEdit Inc. Develop an edge.
The most comprehensive and flexible code editor you can use.
Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial.
www.slickedit.com/sourceforge
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to