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;
      }

-- 


Reply via email to