jypark pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=f823d9c2ccb528f9df0a87a2d5ab13ae8a43ef47

commit f823d9c2ccb528f9df0a87a2d5ab13ae8a43ef47
Author: Ji-Youn Park <jy0703.p...@samsung.com>
Date:   Wed Sep 23 15:04:02 2015 +0830

    ecore_evas_extn: remove old buffer in evas render post function.
    
    Before, ipc_server_data(fd handler callback) is not runned between
    evas_render_pre callback and evas_render_post callback.
    but after async mode, hd handler can be called between render_pre and 
render_post.
    we should remove buffer which can be used render thread, after render 
finished
---
 src/modules/ecore_evas/engines/extn/ecore_evas_extn.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c 
b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
index c8ef291..e280bbc 100644
--- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
+++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
@@ -116,6 +116,12 @@ _ecore_evas_extn_plug_render_post(void *data, Evas *e 
EINA_UNUSED, void *event_i
    extn = bdata->data;
    if (!extn) return;
    _extnbuf_unlock(extn->b[extn->cur_b].buf);
+   if (extn->b[extn->cur_b].obuf)
+     {
+        _extnbuf_unlock(extn->b[extn->cur_b].obuf);
+        _extnbuf_free(extn->b[extn->cur_b].obuf);
+        extn->b[extn->cur_b].obuf = NULL;
+     }
 }
 
 static void
@@ -1015,12 +1021,6 @@ _ipc_server_data(void *data, int type EINA_UNUSED, void 
*event)
                    extn->cur_b = n;
 
                    if (extn->b[pn].buf) _extnbuf_unlock(extn->b[pn].buf);
-                   if (extn->b[pn].obuf)
-                     {
-                        _extnbuf_unlock(extn->b[pn].obuf);
-                        _extnbuf_free(extn->b[pn].obuf);
-                        extn->b[pn].obuf = NULL;
-                     }
 
                    evas_object_image_colorspace_set(bdata->image, 
EVAS_COLORSPACE_ARGB8888);
                    if (extn->b[n].buf)
@@ -1258,6 +1258,12 @@ ecore_evas_extn_plug_new_internal(Ecore_Evas *ee_target)
 
    extn_ee_list = eina_list_append(extn_ee_list, ee);
    ee_target->sub_ecore_evas = eina_list_append(ee_target->sub_ecore_evas, ee);
+
+   evas_event_callback_add(ee_target->evas, EVAS_CALLBACK_RENDER_PRE,
+                           _ecore_evas_extn_plug_render_pre, ee);
+   evas_event_callback_add(ee_target->evas, EVAS_CALLBACK_RENDER_POST,
+                           _ecore_evas_extn_plug_render_post, ee);
+
    return o;
 }
 

-- 


Reply via email to