From 4668d6f7ec00471cf09cb0c3b8fa4c2a79ce7e75 Mon Sep 17 00:00:00 2001 From: subhransu mohanty Date: Mon, 19 Aug 2019 19:21:47 +0900 Subject: [PATCH] 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 3f61e8b..bafc9f9 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -2608,6 +2608,7 @@ EAPI extern Eet_Data_Descriptor *_edje_edd_edje_plugin; 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 300b280..5a3ff6f 100644 --- a/src/lib/edje/edje_textblock_styles.c +++ b/src/lib/edje/edje_textblock_styles.c @@ -356,7 +356,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; @@ -507,7 +507,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 */ @@ -855,11 +854,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; @@ -871,8 +871,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); @@ -902,8 +900,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) @@ -917,7 +914,6 @@ _edje_textblock_style_parse_and_fix(Edje_File *edf) if (tag->text_class || tag->color_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 44edc56..dc2e3fe 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; @@ -396,8 +397,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 * -- 2.7.4