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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs