From 067cbf6df84943c86646b57d87c5ec3c3fd17fbb Mon Sep 17 00:00:00 2001 From: Viacheslav Lvov Date: Thu, 19 Dec 2013 17:34:05 +0900 Subject: [PATCH] evas - render - clear out pending object array more aggressively MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- 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 7d3491a444..6dab39ceed 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; }