Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        pager.c timers.c windowmatch.c 


Log Message:
Use ecore_list_for_each in stead of ECORE_LIST_FOR_EACH (faster).

===================================================================
RCS file: /cvs/e/e16/e/src/pager.c,v
retrieving revision 1.260
retrieving revision 1.261
diff -u -3 -r1.260 -r1.261
--- pager.c     23 Feb 2008 12:09:38 -0000      1.260
+++ pager.c     23 Mar 2008 06:49:50 -0000      1.261
@@ -749,25 +749,33 @@
    EwinShow(ewin);
 }
 
+typedef struct
+{
+   Desk               *dsk;
+   void                (*func) (Pager * p, void *prm);
+   void               *prm;
+} pager_foreach_data;
+
 static void
-PagersForeach(Desk * dsk, void (*func) (Pager * p, void *prm), void *prm)
+_PagersForeachFunc(void *item, void *prm)
 {
-   Pager              *p, *p_cur;
+   Pager              *p = (Pager *) item;
+   pager_foreach_data *data = (pager_foreach_data *) prm;
 
-   if (!pager_list)
+   if (data->dsk && data->dsk != p->dsk)
       return;
+   data->func(p, data->prm);
+}
 
-   /* We may get here recursively */
-   p_cur = (Pager *) ecore_list_current(pager_list);
-
-   ECORE_LIST_FOR_EACH(pager_list, p)
-   {
-      if (dsk && dsk != p->dsk)
-        continue;
-      func(p, prm);
-   }
+static void
+PagersForeach(Desk * dsk, void (*func) (Pager * p, void *prm), void *prm)
+{
+   pager_foreach_data  data;
 
-   ecore_list_goto(pager_list, p_cur);
+   data.dsk = dsk;
+   data.func = func;
+   data.prm = prm;
+   ecore_list_for_each(pager_list, _PagersForeachFunc, &data);
 }
 
 typedef struct
===================================================================
RCS file: /cvs/e/e16/e/src/timers.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- timers.c    23 Feb 2008 12:09:38 -0000      1.34
+++ timers.c    23 Mar 2008 06:49:50 -0000      1.35
@@ -214,15 +214,21 @@
    Efree(id);
 }
 
+static void
+_IdlerRun(void *_id, void *prm __UNUSED__)
+{
+   Idler              *id = (Idler *) _id;
+
+   id->func(id->data);
+}
+
 void
 IdlersRun(void)
 {
-   Idler              *id;
-
    if (EDebug(EDBUG_TYPE_IDLERS))
       Eprintf("IdlersRun\n");
 
-   ECORE_LIST_FOR_EACH(idler_list, id) id->func(id->data);
+   ecore_list_for_each(idler_list, _IdlerRun, NULL);
 }
 
 /*
@@ -241,20 +247,23 @@
 };
 
 static void
-AnimatorsRun(int val __UNUSED__, void *data __UNUSED__)
+_AnimatorRun(void *_an, void *prm __UNUSED__)
 {
-   Animator           *an;
+   Animator           *an = (Animator *) _an;
    int                 again;
 
-   ECORE_LIST_FOR_EACH(animator_list, an)
-   {
 #if DEBUG_ANIMATORS > 1
-      Eprintf("AnimatorRun %p\n", an);
+   Eprintf("AnimatorRun %p\n", an);
 #endif
-      again = an->func(an->data);
-      if (!again)
-        AnimatorDel(an);
-   }
+   again = an->func(an->data);
+   if (!again)
+      AnimatorDel(an);
+}
+
+static void
+AnimatorsRun(int val __UNUSED__, void *data __UNUSED__)
+{
+   ecore_list_for_each(animator_list, _AnimatorRun, NULL);
 
    if (ecore_list_count(animator_list))
       DoIn("Anim", 1e-3 * Conf.animation.step, AnimatorsRun, 0, NULL);
===================================================================
RCS file: /cvs/e/e16/e/src/windowmatch.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -3 -r1.67 -r1.68
--- windowmatch.c       22 Mar 2008 14:46:38 -0000      1.67
+++ windowmatch.c       23 Mar 2008 06:49:50 -0000      1.68
@@ -866,35 +866,43 @@
    return err;
 }
 
-void
-WindowMatchEwinOps(EWin * ewin)
+static void
+_WindowMatchEwinFunc(void *_wm, void *_ew)
 {
-   const WindowMatch  *wm;
+   const WindowMatch  *wm = (WindowMatch *) _wm;
+   EWin               *ew = (EWin *) _ew;
+
+   if (wm->op != MATCH_OP_WINOP || !WindowMatchEwinTest(wm, ew))
+      return;
+
+   /* Match found - do the ops */
+   WindowMatchEobjOpsParse(EoObj(ew), wm->args);
+}
 
-   ECORE_LIST_FOR_EACH(wm_list, wm)
-   {
-      if (wm->op != MATCH_OP_WINOP || !WindowMatchEwinTest(wm, ewin))
-        continue;
-
-      /* Match found - do the ops */
-      WindowMatchEobjOpsParse(EoObj(ewin), wm->args);
-   }
+void
+WindowMatchEwinOps(EWin * ew)
+{
+   ecore_list_for_each(wm_list, _WindowMatchEwinFunc, ew);
 }
 
 #if USE_COMPOSITE
+static void
+_WindowMatchEobjFunc(void *_wm, void *_eo)
+{
+   const WindowMatch  *wm = (WindowMatch *) _wm;
+   EObj               *eo = (EObj *) _eo;
+
+   if (wm->op != MATCH_OP_WINOP || !WindowMatchEobjTest(wm, eo))
+      return;
+
+   /* Match found - do the ops */
+   WindowMatchEobjOpsParse(eo, wm->args);
+}
+
 void
 WindowMatchEobjOps(EObj * eo)
 {
-   const WindowMatch  *wm;
-
-   ECORE_LIST_FOR_EACH(wm_list, wm)
-   {
-      if (wm->op != MATCH_OP_WINOP || !WindowMatchEobjTest(wm, eo))
-        continue;
-
-      /* Match found - do the ops */
-      WindowMatchEobjOpsParse(eo, wm->args);
-   }
+   ecore_list_for_each(wm_list, _WindowMatchEobjFunc, eo);
 }
 #endif
 



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to