hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e5958965e80724b335fc8b0470d46586e7f29051

commit e5958965e80724b335fc8b0470d46586e7f29051
Author: Shinwoo Kim <cinoo....@samsung.com>
Date:   Thu Sep 17 10:40:24 2020 +0900

    evas vg: check object changed as well 2
    
    Summary:
    evas cannot render vg object if Efl_Canvas_Vg_Node_Data flag is not
    EFL_GFX_CHANGE_FLAG_NONE and Evas_Object_Protected_Data.changed is FALSE,
    when vg object marks its node as changed.
    
    Above case could be possible if vg object render_pre is not called, and
    only nd->vd->obj->changed is set to false by evas_object_change_reset.
    
    Reviewers: Hermet, jsuya, herb
    
    Reviewed By: Hermet
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D12142
---
 src/lib/evas/canvas/efl_canvas_vg_node.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/efl_canvas_vg_node.c 
b/src/lib/evas/canvas/efl_canvas_vg_node.c
index a076136815..f2bead512f 100644
--- a/src/lib/evas/canvas/efl_canvas_vg_node.c
+++ b/src/lib/evas/canvas/efl_canvas_vg_node.c
@@ -19,7 +19,15 @@ static const Efl_Canvas_Vg_Interpolation 
interpolation_identity = {
 static void
 _node_change(Efl_VG *obj, Efl_Canvas_Vg_Node_Data *nd)
 {
-   if (!nd || nd->flags != EFL_GFX_CHANGE_FLAG_NONE) return;
+   if (!nd) return;
+   if (nd->flags != EFL_GFX_CHANGE_FLAG_NONE)
+     {
+       if ((nd->vd && nd->vd->obj) &&
+           (!nd->vd->obj || !nd->vd->obj->changed))
+         efl_canvas_vg_object_change(nd->vd);
+
+       return;
+     }
    nd->flags = EFL_GFX_CHANGE_FLAG_ALL;
 
    Eo *p = obj;

-- 


Reply via email to