cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7b4b7b66966c156634ab5920fc1ddf48282634c8
commit 7b4b7b66966c156634ab5920fc1ddf48282634c8 Author: Cedric Bail <ced...@osg.samsung.com> Date: Fri May 5 17:06:15 2017 -0700 ecore_evas: add logic to allow partial refactoring of backends. --- src/lib/ecore_evas/ecore_evas.c | 15 +-------------- src/lib/ecore_evas/ecore_evas_private.h | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index 50ad308..5eb48c4 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -151,8 +151,6 @@ ecore_evas_render_wait(Ecore_Evas *ee) EAPI Eina_Bool ecore_evas_render(Ecore_Evas *ee) { - Eina_List *ll; - Ecore_Evas *ee2; Eina_Bool rend = EINA_FALSE; if (ee->in_async_render) @@ -165,18 +163,7 @@ ecore_evas_render(Ecore_Evas *ee) if (!ee->engine.func->fn_prepare(ee)) return EINA_FALSE; - EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) - { - if (ee2->engine.func->fn_render) - rend |= ee2->engine.func->fn_render(ee2); - else - rend |= ecore_evas_render(ee2); - } - // We do not force the child to be sync, so we should wait for them to be done - EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) - ecore_evas_render_wait(ee2); - - if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee); + rend = ecore_evas_render_prepare(ee); ee->in_async_render = 1; diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 6f1d829..d6fd15d 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -479,6 +479,31 @@ Eina_Bool _ecore_evas_cursors_init(Ecore_Evas *ee); EAPI void ecore_evas_render_wait(Ecore_Evas *ee); EAPI Eina_Bool ecore_evas_render(Ecore_Evas *ee); +static inline Eina_Bool +ecore_evas_render_prepare(Ecore_Evas *ee) +{ + Ecore_Evas *ee2; + Eina_List *ll; + Eina_Bool r = EINA_FALSE; + + EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) + { + if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); + if (ee2->engine.func->fn_render) + r |= ee2->engine.func->fn_render(ee2); + else + r |= ecore_evas_render(ee2); + if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2); + } + + // We do not force the child to be sync, so we should wait for them to be done + EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) + if (!ee2->engine.func->fn_render) + ecore_evas_render_wait(ee2); + + if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee); + return r; +} #undef EAPI #define EAPI --