diff options
author | Shinwoo Kim <cinoo.kim@samsung.com> | 2020-09-17 10:40:24 +0900 |
---|---|---|
committer | Hermet Park <chuneon.park@samsung.com> | 2020-09-17 10:40:25 +0900 |
commit | e5958965e80724b335fc8b0470d46586e7f29051 (patch) | |
tree | e595ee8c6a9a405ca63fdd2814757c85fb9b8679 | |
parent | 3bd066c7dbffc2655501dea0b8d44d567ac1113b (diff) | |
download | efl-e5958965e80724b335fc8b0470d46586e7f29051.tar.gz |
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
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_vg_node.c | 10 |
1 files changed, 9 insertions, 1 deletions
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; |