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.
This commit is contained in:
ChunEon Park 2013-12-08 02:40:35 +09:00
parent ef8e2c84ae
commit b113f555e0
1 changed files with 22 additions and 2 deletions

View File

@ -312,6 +312,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,
@ -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))