hermet pushed a commit to branch master.

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

commit 174c593c70ae1ac8babc67637aa434aff0dfa243
Author: Hermet Park <hermetp...@gmail.com>
Date:   Tue Dec 31 14:15:49 2019 +0900

    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
---
 src/lib/evas/canvas/efl_canvas_vg_container.c  | 6 ++++++
 src/lib/evas/canvas/efl_canvas_vg_container.eo | 4 ++++
 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);
 }

-- 


Reply via email to