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>
This commit is contained in:
Viacheslav Lvov 2013-12-19 17:34:05 +09:00 committed by Cedric BAIL
parent 846bbafbfb
commit 067cbf6df8
1 changed files with 6 additions and 0 deletions

View File

@ -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;
}