cedric pushed a commit to branch master.

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

commit 23dddfffacaee71a413456c07b7eaf279ef52df3
Author: Cedric BAIL <ced...@osg.samsung.com>
Date:   Fri Apr 28 13:41:54 2017 -0700

    ecore_evas: do timeout reset on RENDER_POST for future asynchronous 
rendering.
---
 src/lib/ecore_evas/ecore_evas_buffer.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c 
b/src/lib/ecore_evas/ecore_evas_buffer.c
index b8ab4df..e2096ed 100644
--- a/src/lib/ecore_evas/ecore_evas_buffer.c
+++ b/src/lib/ecore_evas/ecore_evas_buffer.c
@@ -178,7 +178,6 @@ _ecore_evas_buffer_render(Ecore_Evas *ee)
    if (updates)
      {
         evas_render_updates_free(updates);
-        _ecore_evas_idle_timeout_update(ee);
      }
 
    if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
@@ -190,7 +189,8 @@ static void
 _ecore_evas_buffer_update_image(void *data, Evas *e EINA_UNUSED, void 
*event_info)
 {
    Evas_Event_Render_Post *post = event_info;
-   Ecore_Evas_Engine_Buffer_Data *bdata = data;
+   Ecore_Evas *ee = data;
+   Ecore_Evas_Engine_Buffer_Data *bdata = ee->engine.data;
    Eina_Rectangle *r;
    Eina_List *l;
 
@@ -200,6 +200,12 @@ _ecore_evas_buffer_update_image(void *data, Evas *e 
EINA_UNUSED, void *event_inf
                                        r->x, r->y, r->w, r->h);
 }
 
+static void
+_evas_evas_buffer_rendered(void *data, Evas *e EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   _ecore_evas_idle_timeout_update(ee);
+}
+
 EAPI int
 ecore_evas_buffer_render(Ecore_Evas *ee)
 {
@@ -843,6 +849,8 @@ ecore_evas_buffer_allocfunc_new(int w, int h,
    evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long 
long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
    _ecore_evas_focus_device_set(ee, NULL, EINA_TRUE);
 
+   evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, 
_evas_evas_buffer_rendered, ee);
+
    return ee;
 }
 
@@ -939,7 +947,8 @@ ecore_evas_object_image_new(Ecore_Evas *ee_target)
    evas_output_method_set(ee->evas, rmethod);
    evas_output_size_set(ee->evas, w, h);
    evas_output_viewport_set(ee->evas, 0, 0, w, h);
-   evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, 
_ecore_evas_buffer_update_image, bdata);
+   evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, 
_ecore_evas_buffer_update_image, ee);
+   evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, 
_evas_evas_buffer_rendered, ee);
 
    bdata->image = o;
    evas_object_data_set(bdata->image, "Ecore_Evas", ee);

-- 


Reply via email to