diff options
author | Hermet Park <hermetpark@gmail.com> | 2019-12-31 14:15:49 +0900 |
---|---|---|
committer | Hermet Park <hermetpark@gmail.com> | 2019-12-31 14:19:01 +0900 |
commit | 174c593c70ae1ac8babc67637aa434aff0dfa243 (patch) | |
tree | 59a8f064d9df5bc5f77ef57b48a6381397b08555 | |
parent | d79693d1a9086541ff16a8dde7c0a4b79f14cc19 (diff) | |
download | efl-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.c | 6 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_vg_container.eo | 4 | ||||
-rw-r--r-- | src/static_libs/vg_common/vg_common_json.c | 6 |
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); } |