edje: another small speedup for elemines startup time (-2%).
authorCedric Bail <cedric.bail@samsung.com>
Thu, 1 Aug 2013 02:40:13 +0000 (11:40 +0900)
committerCedric Bail <cedric.bail@samsung.com>
Thu, 1 Aug 2013 02:40:13 +0000 (11:40 +0900)
src/lib/edje/edje_util.c

index f520bcd1d0f93b3d3a4773886a40b747b147dd90..92fa2d7379f10893269413c4c83994c803c81ded 100644 (file)
@@ -5854,8 +5854,8 @@ _edje_real_part_recursive_get(Edje **ed, const char *part)
 Evas_Object *
 _edje_children_get(Edje_Real_Part *rp, const char *partid)
 {
-   Evas_Object *child;
-   Eina_List *l;
+   Evas_Object *child = NULL;
+   Eina_Iterator *it = NULL;
    long int v;
    char *p;
 
@@ -5869,10 +5869,10 @@ _edje_children_get(Edje_Real_Part *rp, const char *partid)
         return _edje_external_content_get
           (rp->typedata.swallow->swallowed_object, partid);
       case EDJE_PART_TYPE_BOX:
-         l = evas_object_box_children_get(rp->object);
+         it = evas_object_box_iterator_new(rp->object);
          break;
       case EDJE_PART_TYPE_TABLE:
-         l = evas_object_table_children_get(rp->object);
+         it = evas_object_table_iterator_new(rp->object);
          break;
       default:
          return NULL;
@@ -5881,13 +5881,19 @@ _edje_children_get(Edje_Real_Part *rp, const char *partid)
    v = strtol(partid, &p, 10);
    if ((*p == '\0') && (v >= 0))
      {
-        child = eina_list_nth(l, v);
+        int i = 0;
+        EINA_ITERATOR_FOREACH(it, child)
+          {
+             if (i == v) break;
+             i++;
+          }
+        if (i != v) child = NULL;
      }
    else
      {
         Evas_Object *cur;
-        child = NULL;
-        EINA_LIST_FREE(l, cur)
+
+        EINA_ITERATOR_FOREACH(it, cur)
           {
              const char *name = evas_object_name_get(cur);
              if ((name) && (!strcmp(name, partid)))
@@ -5897,7 +5903,7 @@ _edje_children_get(Edje_Real_Part *rp, const char *partid)
                }
           }
      }
-   eina_list_free(l);
+   eina_iterator_free(it);
 
    return child;
 }