hermet pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b113f555e0ea0b0261ad870fca35d427a415c20e
commit b113f555e0ea0b0261ad870fca35d427a415c20e Author: ChunEon Park <her...@hermet.pe.kr> Date: Sun Dec 8 02:40:35 2013 +0900 evas/render - make sure render pre in proxy rendering. if the some of children are the mapped object in source object tree as well as the the mappped object is invisible, then they wont be render_pre() called. this make sure those render_pre() in proxy rendering. --- src/lib/evas/canvas/evas_render.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index d33cd42..a60026e 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -313,6 +313,22 @@ _evas_proxy_redraw_set(Evas_Public_Data *e, Evas_Object_Protected_Data *obj, } static void +_evas_proxy_render_pre(Evas_Object_Protected_Data *obj) +{ + Evas_Object_Protected_Data *obj2; + + /* render_pre() won't be called if the children were the invisible + mapped object. So here make sure render_pre() for the children. */ + obj->func->render_pre(obj->object, obj, obj->private_data); + + EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj->object), + obj2) + { + if (obj2->changed) _evas_proxy_render_pre(obj2); + } +} + +static void _evas_render_phase1_direct(Evas_Public_Data *e, Eina_Array *active_objects, Eina_Array *restack_objects EINA_UNUSED, @@ -354,9 +370,13 @@ _evas_render_phase1_direct(Evas_Public_Data *e, if (obj->changed) { evas_object_clip_recalc(obj); - obj->func->render_pre(eo_obj, obj, obj->private_data); if (obj->proxy->redraw) - _evas_render_prev_cur_clip_cache_add(e, obj); + { + _evas_proxy_render_pre(obj); + _evas_render_prev_cur_clip_cache_add(e, obj); + } + else obj->func->render_pre(eo_obj, obj, obj->private_data); + if (obj->proxy->proxies) { if (obj->smart.smart && evas_object_smart_changed_get(eo_obj)) --