cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b6ebcc35fcc03388f2d128ed2e81dd9b4b28c12a
commit b6ebcc35fcc03388f2d128ed2e81dd9b4b28c12a Author: Mike Blumenkrantz <zm...@samsung.com> Date: Thu Jul 11 14:17:54 2019 -0400 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.b...@free.fr> Differential Revision: https://phab.enlightenment.org/D9287 --- src/lib/evas/canvas/evas_render.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 87934be5e4..074dc1d618 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -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; } --