cedric pushed a commit to branch master.

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

commit 067cbf6df84943c86646b57d87c5ec3c3fd17fbb
Author: Viacheslav Lvov <v.l...@samsung.com>
Date:   Thu Dec 19 17:34:05 2013 +0900

    evas - render - clear out pending object array more aggressively
    
    There was detected that pending_objects array of Evas structure of
    email application stores at least 550 objects that never are removed
    from this array. These objects are not active and are not about to render.
    We know that once the decision not to remove changed objects from this
    array was accepted. But then the criterion of leaving object in this
    array was weakened.
    We propose to weaken this criterion more sufficiently – do not store
    in this array objects that can not be cause of whole canvas
    invalidation. Our exact proposal for this criterion you can see in the
    patch attached to this issue.
    
    NOTE: This patch is a try, there may be some side effect especially with
    mapped object that we didn't find, so it could be reverted if before the
    release of 1.9 we see anything wrong.
    
    Reviewers: cedric
    
    CC: cedric, seoz
    
    Differential Revision: https://phab.enlightenment.org/D354
    
    Signed-off-by: Cedric BAIL <cedric.b...@samsung.com>
---
 src/lib/evas/canvas/evas_render.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 7d3491a..6dab39c 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -825,6 +825,12 @@ pending_change(void *data, void *gdata EINA_UNUSED)
         obj->pre_render_done = EINA_FALSE;
         evas_object_change_reset(eo_obj);
      }
+   else if (!_evas_render_can_render(eo_obj, obj) &&
+            (!obj->is_active) && (!obj->render_pre) &&
+            (!obj->rect_del))
+     {
+        evas_object_change_reset(eo_obj);
+     }
    if (!obj->changed) eo_data_unref(eo_obj, obj);
    return obj->changed ? EINA_TRUE : EINA_FALSE;
 }

-- 


Reply via email to