summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViacheslav Lvov <v.lvov@samsung.com>2013-12-19 17:34:05 +0900
committerCedric BAIL <cedric.bail@samsung.com>2013-12-20 14:43:23 +0900
commit067cbf6df84943c86646b57d87c5ec3c3fd17fbb (patch)
tree5432bfa0dfd07ce563f40ead880643fcfb867c28
parent846bbafbfb23c3b01eacb7a5382087ff978dfeae (diff)
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.bail@samsung.com>
-rw-r--r--src/lib/evas/canvas/evas_render.c6
1 files changed, 6 insertions, 0 deletions
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)
825 obj->pre_render_done = EINA_FALSE; 825 obj->pre_render_done = EINA_FALSE;
826 evas_object_change_reset(eo_obj); 826 evas_object_change_reset(eo_obj);
827 } 827 }
828 else if (!_evas_render_can_render(eo_obj, obj) &&
829 (!obj->is_active) && (!obj->render_pre) &&
830 (!obj->rect_del))
831 {
832 evas_object_change_reset(eo_obj);
833 }
828 if (!obj->changed) eo_data_unref(eo_obj, obj); 834 if (!obj->changed) eo_data_unref(eo_obj, obj);
829 return obj->changed ? EINA_TRUE : EINA_FALSE; 835 return obj->changed ? EINA_TRUE : EINA_FALSE;
830} 836}