edje: Avoid string duplication when possible.

Summary:
Most use case the part name dosen't contain the recursive name
so we don't have to go through expensive eina_string_split operation.

Test Plan:
edje-suite (34/37 edje-suite                              OK       0.67 s)
elementary-test
app launching on enlightenment

Reviewers: raster, smohanty, Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12055
This commit is contained in:
Woochanlee 2020-07-16 11:37:10 +01:00 committed by Carsten Haitzler (Rasterman)
parent 8504f213d6
commit 8941514b46
1 changed files with 14 additions and 8 deletions

View File

@ -5602,17 +5602,23 @@ _edje_real_part_text_text_source_description_get(Edje_Real_Part *ep, Edje_Real_P
Edje_Real_Part *
_edje_real_part_recursive_get(Edje **ed, const char *part)
{
Edje_Real_Part *rp;
char **path;
if (strchr(part, EDJE_PART_PATH_SEPARATOR))
{
Edje_Real_Part *rp;
char **path;
path = eina_str_split(part, EDJE_PART_PATH_SEPARATOR_STRING, 0);
if (!path) return NULL;
path = eina_str_split(part, EDJE_PART_PATH_SEPARATOR_STRING, 0);
if (!path) return NULL;
rp = _edje_real_part_recursive_get_helper(ed, path);
rp = _edje_real_part_recursive_get_helper(ed, path);
free(*path);
free(path);
return rp;
free(*path);
free(path);
return rp;
}
return _edje_real_part_get(*ed, part);
}
Evas_Object *