Use ecore_list_for_each in stead of ECORE_LIST_FOR_EACH (faster).
SVN revision: 34095
This commit is contained in:
parent
c9053d3090
commit
a39948076c
38
src/pager.c
38
src/pager.c
|
@ -749,25 +749,33 @@ PagerShow(Pager * p)
|
|||
EwinShow(ewin);
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Desk *dsk;
|
||||
void (*func) (Pager * p, void *prm);
|
||||
void *prm;
|
||||
} pager_foreach_data;
|
||||
|
||||
static void
|
||||
_PagersForeachFunc(void *item, void *prm)
|
||||
{
|
||||
Pager *p = (Pager *) item;
|
||||
pager_foreach_data *data = (pager_foreach_data *) prm;
|
||||
|
||||
if (data->dsk && data->dsk != p->dsk)
|
||||
return;
|
||||
data->func(p, data->prm);
|
||||
}
|
||||
|
||||
static void
|
||||
PagersForeach(Desk * dsk, void (*func) (Pager * p, void *prm), void *prm)
|
||||
{
|
||||
Pager *p, *p_cur;
|
||||
pager_foreach_data data;
|
||||
|
||||
if (!pager_list)
|
||||
return;
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
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
|
||||
|
|
33
src/timers.c
33
src/timers.c
|
@ -214,15 +214,21 @@ IdlerDel(Idler * id)
|
|||
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 @@ struct _animator
|
|||
};
|
||||
|
||||
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);
|
||||
|
|
|
@ -866,35 +866,43 @@ WindowMatchEobjOpsParse(EObj * eo, const char *ops)
|
|||
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;
|
||||
|
||||
ECORE_LIST_FOR_EACH(wm_list, wm)
|
||||
{
|
||||
if (wm->op != MATCH_OP_WINOP || !WindowMatchEwinTest(wm, ewin))
|
||||
continue;
|
||||
if (wm->op != MATCH_OP_WINOP || !WindowMatchEwinTest(wm, ew))
|
||||
return;
|
||||
|
||||
/* Match found - do the ops */
|
||||
WindowMatchEobjOpsParse(EoObj(ewin), wm->args);
|
||||
}
|
||||
/* Match found - do the ops */
|
||||
WindowMatchEobjOpsParse(EoObj(ew), 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
|
||||
|
||||
|
|
Loading…
Reference in New Issue