summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinwoo Kim <cinoo.kim@samsung.com>2020-09-17 10:40:24 +0900
committerHermet Park <chuneon.park@samsung.com>2020-09-17 10:40:25 +0900
commite5958965e80724b335fc8b0470d46586e7f29051 (patch)
treee595ee8c6a9a405ca63fdd2814757c85fb9b8679
parent3bd066c7dbffc2655501dea0b8d44d567ac1113b (diff)
downloadefl-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.c10
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;