summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2019-07-11 14:17:54 -0400
committerCedric BAIL <cedric.bail@free.fr>2019-07-11 16:51:35 -0700
commitb6ebcc35fcc03388f2d128ed2e81dd9b4b28c12a (patch)
treedbf6cd636a16978c75c972d32f5856d61e3bbc49
parent3b5d050353b7e766f2f763c1a6a13afd3b9e8ad0 (diff)
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
-rw-r--r--src/lib/evas/canvas/evas_render.c5
1 files changed, 5 insertions, 0 deletions
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,
3625 obj = eina_array_data_get(&e->pending_objects, i); 3625 obj = eina_array_data_get(&e->pending_objects, i);
3626 if (obj->smart.parent) 3626 if (obj->smart.parent)
3627 { 3627 {
3628 /* these are all objects which could not be rendered because they were
3629 * added to their smart parent in this cycle and the parent was not changed
3630 */
3628 Evas_Object_Protected_Data *smart_parent; 3631 Evas_Object_Protected_Data *smart_parent;
3629 3632
3630 smart_parent = efl_data_scope_get(obj->smart.parent, 3633 smart_parent = efl_data_scope_get(obj->smart.parent,
3631 EFL_CANVAS_OBJECT_CLASS); 3634 EFL_CANVAS_OBJECT_CLASS);
3632 evas_object_change(obj->smart.parent, smart_parent); 3635 evas_object_change(obj->smart.parent, smart_parent);
3636 /* render cache must be invalidated to correctly render subobj on next pass */
3637 evas_object_smart_render_cache_clear(obj->smart.parent);
3633 } 3638 }
3634 obj->changed = EINA_TRUE; 3639 obj->changed = EINA_TRUE;
3635 } 3640 }