diff options
author | Woochanlee <wc0917.lee@samsung.com> | 2020-07-07 11:20:53 +0100 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2020-07-07 11:24:59 +0100 |
commit | 704d58d658ed4424a886c127f3bbe83afde1f2a1 (patch) | |
tree | 1b5e53952458b19590c44640e698939c1937e12d | |
parent | cac95313c7fd6aad71d48f49efe26d974b0bd5bc (diff) | |
download | efl-704d58d658ed4424a886c127f3bbe83afde1f2a1.tar.gz |
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.
Reviewers: smohanty, cedric, Hermet, raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12045
-rw-r--r-- | src/lib/edje/edje_util.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index 4d9a9dc369..33d00488e5 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -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 ((*ed)->collection && (*ed)->collection->alias) + { + 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 * |