summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHermet Park <hermetpark@gmail.com>2019-12-31 14:15:49 +0900
committerHermet Park <hermetpark@gmail.com>2019-12-31 14:19:01 +0900
commit174c593c70ae1ac8babc67637aa434aff0dfa243 (patch)
tree59a8f064d9df5bc5f77ef57b48a6381397b08555
parentd79693d1a9086541ff16a8dde7c0a4b79f14cc19 (diff)
downloadefl-174c593c70ae1ac8babc67637aa434aff0dfa243.tar.gz
evas vg: add an new interface efl_canvas_vg_container_children_direct_get()
Summary: We need an efficient method to navigate children faster. Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10989
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_container.c6
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg_container.eo4
-rw-r--r--src/static_libs/vg_common/vg_common_json.c6
3 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/evas/canvas/efl_canvas_vg_container.c b/src/lib/evas/canvas/efl_canvas_vg_container.c
index 9c7061b010..dfa5b1ec74 100644
--- a/src/lib/evas/canvas/efl_canvas_vg_container.c
+++ b/src/lib/evas/canvas/efl_canvas_vg_container.c
@@ -304,6 +304,12 @@ _efl_canvas_vg_container_children_get(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Contain
return eina_list_iterator_new(pd->children);
}
+static const Eina_List *
+_efl_canvas_vg_container_children_direct_get(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Container_Data *pd)
+{
+ return pd->children;
+}
+
static Eina_Bool
_efl_canvas_vg_container_efl_gfx_path_interpolate(Eo *obj, Efl_Canvas_Vg_Container_Data *pd, const Efl_VG *from, const Efl_VG *to, double pos_map)
{
diff --git a/src/lib/evas/canvas/efl_canvas_vg_container.eo b/src/lib/evas/canvas/efl_canvas_vg_container.eo
index 0290cf4848..6865ecdd24 100644
--- a/src/lib/evas/canvas/efl_canvas_vg_container.eo
+++ b/src/lib/evas/canvas/efl_canvas_vg_container.eo
@@ -13,6 +13,10 @@ class @beta Efl.Canvas.Vg.Container extends Efl.Canvas.Vg.Node
[[Get all children of container]]
return: iterator<Efl.Canvas.Vg.Node> @move @no_unused; [[Iterator to children]]
}
+ children_direct_get {
+ [[Get all children of container]]
+ return: const(list<Efl.Canvas.Vg.Node>) @no_unused; [[List to children]]
+ }
}
implements {
Efl.Object.constructor;
diff --git a/src/static_libs/vg_common/vg_common_json.c b/src/static_libs/vg_common/vg_common_json.c
index 7a41527795..ba113c2bf8 100644
--- a/src/static_libs/vg_common/vg_common_json.c
+++ b/src/static_libs/vg_common/vg_common_json.c
@@ -378,11 +378,11 @@ _reset_vg_tree(Efl_VG *node)
//Hide all nodes visibility
if (efl_isa(node, EFL_CANVAS_VG_CONTAINER_CLASS))
{
+ Eina_List *list = (Eina_List*) efl_canvas_vg_container_children_direct_get(node);
+ Eina_List *list2;
Efl_VG* child;
- Eina_Iterator *itr = efl_canvas_vg_container_children_get(node);
- EINA_ITERATOR_FOREACH(itr, child)
+ EINA_LIST_FOREACH(list, list2, child)
_reset_vg_tree(child);
- if (itr) eina_iterator_free(itr);
}
efl_gfx_entity_visible_set(node, EINA_FALSE);
}