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 *

-- 


Reply via email to