hermet pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1d930427a3d2fd5540ce804e0e90569d12a72b55
commit 1d930427a3d2fd5540ce804e0e90569d12a72b55 Author: subhransu mohanty <sub.moha...@samsung.com> Date: Mon Aug 19 19:21:47 2019 +0900 edje/styles: keep an escaped string of font_set. As eina_ecaped_string() creates a new string just make it once and use when needed. Reviewers: Hermet, ali.alzyod Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9615 --- src/lib/edje/edje_private.h | 1 + src/lib/edje/edje_textblock_styles.c | 12 ++++-------- src/lib/edje/edje_util.c | 7 ++++++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index 0eab189859..f054fa25a2 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -2457,6 +2457,7 @@ EAPI extern Eet_Data_Descriptor *_edje_edd_edje_part_collection; extern Eina_Inlist *_edje_edjes; extern char *_edje_fontset_append; +extern char *_edje_fontset_append_escaped; extern FLOAT_T _edje_scale; extern int _edje_util_freeze_val; extern int _edje_util_freeze_calc_count; diff --git a/src/lib/edje/edje_textblock_styles.c b/src/lib/edje/edje_textblock_styles.c index 555cab92c0..cebbd23677 100644 --- a/src/lib/edje/edje_textblock_styles.c +++ b/src/lib/edje/edje_textblock_styles.c @@ -168,7 +168,7 @@ _edje_textblock_style_update(Edje *ed, Edje_Style *stl, Eina_Bool force) Eina_Strbuf *txt = NULL; Edje_Style_Tag *tag; Edje_Text_Class *tc; - char *fontset = NULL, *fontsource = NULL; + char *fontset = _edje_fontset_append_escaped, *fontsource = NULL; if (!ed->file) return; @@ -253,7 +253,6 @@ _edje_textblock_style_update(Edje *ed, Edje_Style *stl, Eina_Bool force) eina_strbuf_append(txt, "'"); } - if (fontset) free(fontset); if (fontsource) free(fontsource); /* Configure the style */ @@ -448,11 +447,12 @@ _edje_textblock_style_parse_and_fix(Edje_File *edf) Eina_Strbuf *txt = NULL; Eina_List *l, *ll; Edje_Style *stl; + char *fontset = _edje_fontset_append_escaped; EINA_LIST_FOREACH(edf->styles, l, stl) { Edje_Style_Tag *tag; - char *fontset = NULL, *fontsource = NULL, *ts; + char *fontsource = NULL, *ts; if (stl->style) break; @@ -464,8 +464,6 @@ _edje_textblock_style_parse_and_fix(Edje_File *edf) stl->style = evas_textblock_style_new(); evas_textblock_style_set(stl->style, NULL); - if (_edje_fontset_append) - fontset = eina_str_escape(_edje_fontset_append); if (edf->fonts) fontsource = eina_str_escape(edf->path); @@ -495,8 +493,7 @@ _edje_textblock_style_parse_and_fix(Edje_File *edf) { if (fontset) { - eina_strbuf_append(txt, " "); - eina_strbuf_append(txt, "font_fallbacks="); + eina_strbuf_append(txt, " font_fallbacks="); eina_strbuf_append(txt, fontset); } if (fontsource) @@ -510,7 +507,6 @@ _edje_textblock_style_parse_and_fix(Edje_File *edf) if (tag->text_class) stl->readonly = EINA_FALSE; } - if (fontset) free(fontset); if (fontsource) free(fontsource); /* Configure the style */ diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index 2f6c5b2d22..0e74e79855 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -27,6 +27,7 @@ Efl_Observable *_edje_size_class_member = NULL; static Eina_Rbtree *_edje_box_layout_registry = NULL; char *_edje_fontset_append = NULL; +char *_edje_fontset_append_escaped = NULL; FLOAT_T _edje_scale = ZERO; Eina_Bool _edje_password_show_last = EINA_FALSE; double _edje_password_show_last_timeout = 0; @@ -357,8 +358,12 @@ EAPI void edje_fontset_append_set(const char *fonts) { if (_edje_fontset_append) - free(_edje_fontset_append); + { + free(_edje_fontset_append); + free(_edje_fontset_append_escaped); + } _edje_fontset_append = fonts ? strdup(fonts) : NULL; + _edje_fontset_append_escaped = fonts ? eina_str_escape(fonts) : NULL; } EAPI const char * --