ecore_evas: add logic to allow partial refactoring of backends.

This commit is contained in:
Cedric Bail 2017-05-05 17:06:15 -07:00
parent 385acef7f9
commit 7b4b7b6696
2 changed files with 26 additions and 14 deletions

View File

@ -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;

View File

@ -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