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

-- 


Reply via email to