edje: another small speedup for elemines startup time (-2%).

This commit is contained in:
Cedric Bail 2013-08-01 11:40:13 +09:00
parent 5710c3acb7
commit b845a54ee3
1 changed files with 14 additions and 8 deletions

View File

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