forked from enlightenment/efl
evas/render: clear smart render cache when re-adding smart parent in post-render
given the following scenario: * object is added to smartobj * smartobj is otherwise unchanged * render occurs object will never render due to smartobj's render cache not including object by clearing this cache when reinserting smartobj into the render tree for a followup render, the object chain will be correctly processed on the next pass fix T7990 Reviewed-by: Cedric BAIL <cedric.bail@free.fr> Differential Revision: https://phab.enlightenment.org/D9287
This commit is contained in:
parent
3b5d050353
commit
b6ebcc35fc
|
@ -3625,11 +3625,16 @@ evas_render_updates_internal(Evas *eo_e,
|
|||
obj = eina_array_data_get(&e->pending_objects, i);
|
||||
if (obj->smart.parent)
|
||||
{
|
||||
/* these are all objects which could not be rendered because they were
|
||||
* added to their smart parent in this cycle and the parent was not changed
|
||||
*/
|
||||
Evas_Object_Protected_Data *smart_parent;
|
||||
|
||||
smart_parent = efl_data_scope_get(obj->smart.parent,
|
||||
EFL_CANVAS_OBJECT_CLASS);
|
||||
evas_object_change(obj->smart.parent, smart_parent);
|
||||
/* render cache must be invalidated to correctly render subobj on next pass */
|
||||
evas_object_smart_render_cache_clear(obj->smart.parent);
|
||||
}
|
||||
obj->changed = EINA_TRUE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue