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