hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4b2403d80cd3259c3c2fb2c667c6b1d1c15cab19

commit 4b2403d80cd3259c3c2fb2c667c6b1d1c15cab19
Author: subhransu mohanty <[email protected]>
Date:   Wed Aug 28 13:18:42 2019 +0900

    edje: refactor _edje_object_file_set_internal() function
    
    Summary:
    move the file related function to edje_cache so that code
    is easy to read and maintainable and we don't have to do unnecessary
    stuff for each edje object creation.
    
    Reviewers: Hermet
    
    Reviewed By: Hermet
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D9761
---
 src/lib/edje/edje_cache.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++
 src/lib/edje/edje_load.c  |  98 -------------------------------------------
 2 files changed, 103 insertions(+), 98 deletions(-)

diff --git a/src/lib/edje/edje_cache.c b/src/lib/edje/edje_cache.c
index 24e18b20c6..a48ee85549 100644
--- a/src/lib/edje/edje_cache.c
+++ b/src/lib/edje/edje_cache.c
@@ -387,6 +387,93 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
    return edc;
 }
 
+void
+_edje_extract_mo_files(Edje_File *edf)
+{
+   Eina_Strbuf *mo_id_str;
+   const void *data;
+   const char *cache_path;
+   const char *filename;
+   unsigned int crc;
+   time_t t;
+   size_t sz;
+   unsigned int i;
+   int len;
+
+   cache_path = efreet_cache_home_get();
+
+   t = eina_file_mtime_get(edf->f);
+   sz = eina_file_size_get(edf->f);
+   filename = eina_file_filename_get(edf->f);
+   crc = eina_crc(filename, strlen(filename), 0xffffffff, EINA_TRUE);
+
+   snprintf(edf->fid, sizeof(edf->fid), "%lld-%lld-%x",
+            (long long int)t,
+            (long long int)sz,
+            crc);
+
+   mo_id_str = eina_strbuf_new();
+
+   for (i = 0; i < edf->mo_dir->mo_entries_count; i++)
+     {
+        Edje_Mo *mo_entry;
+        char out[PATH_MAX + PATH_MAX + 128];
+        char outdir[PATH_MAX];
+        char *sub_str;
+        char *mo_src;
+
+        mo_entry = &edf->mo_dir->mo_entries[i];
+
+        eina_strbuf_append_printf(mo_id_str,
+                                  "edje/mo/%i/%s/LC_MESSAGES",
+                                  mo_entry->id,
+                                  mo_entry->locale);
+        data = eet_read_direct(edf->ef,
+                               eina_strbuf_string_get(mo_id_str),
+                               &len);
+
+        if (data)
+          {
+             snprintf(outdir, sizeof(outdir),
+                      "%s/edje/%s/LC_MESSAGES",
+                      cache_path, mo_entry->locale);
+             ecore_file_mkpath(outdir);
+             mo_src = strdup(mo_entry->mo_src);
+             sub_str = strstr(mo_src, ".po");
+
+             if (sub_str)
+               sub_str[1] = 'm';
+
+             snprintf(out, sizeof(out), "%s/%s-%s",
+                      outdir, edf->fid, mo_src);
+             if (ecore_file_exists(out))
+               {
+                  if (edf->mtime > ecore_file_mod_time(out))
+                    ecore_file_remove(out);
+               }
+             if (!ecore_file_exists(out))
+               {
+                  FILE *f;
+
+                  f = fopen(out, "wb");
+                  if (f)
+                    {
+                       if (fwrite(data, len, 1, f) != 1)
+                         ERR("Could not write mo: %s: %s", out, 
strerror(errno));
+                       fclose(f);
+                    }
+                  else
+                    ERR("Could not open for writing mo: %s: %s", out, 
strerror(errno));
+               }
+             free(mo_src);
+          }
+
+        eina_strbuf_reset(mo_id_str);
+     }
+
+   eina_strbuf_free(mo_id_str);
+}
+
 // XXX: this is not pretty. some oooooold edje files do not store strings
 // in their dictionary for hashes. this works around crashes loading such
 // files
@@ -542,6 +629,22 @@ _edje_file_open(const Eina_File *f, int *error_ret, time_t 
mtime, Eina_Bool coll
           }
      }
 
+   if (edf->external_dir)
+     {
+        unsigned int i;
+
+        for (i = 0; i < edf->external_dir->entries_count; ++i)
+          edje_module_load(edf->external_dir->entries[i].entry);
+     }
+
+   // this call is unnecessary as we are doing same opeartion
+   // inside _edje_textblock_style_parse_and_fix() function
+   // remove ??
+   //_edje_textblock_style_all_update(ed);
+
+   if (edf->mo_dir)
+     _edje_extract_mo_files(edf);
+
    return edf;
 }
 
diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c
index e1b3085eea..4039bd562a 100644
--- a/src/lib/edje/edje_load.c
+++ b/src/lib/edje/edje_load.c
@@ -52,93 +52,6 @@ _edje_smart_nested_smart_class_new(void)
    return smart;
 }
 
-void
-_edje_extract_mo_files(Edje_File *edf)
-{
-   Eina_Strbuf *mo_id_str;
-   const void *data;
-   const char *cache_path;
-   const char *filename;
-   unsigned int crc;
-   time_t t;
-   size_t sz;
-   unsigned int i;
-   int len;
-
-   cache_path = efreet_cache_home_get();
-
-   t = eina_file_mtime_get(edf->f);
-   sz = eina_file_size_get(edf->f);
-   filename = eina_file_filename_get(edf->f);
-   crc = eina_crc(filename, strlen(filename), 0xffffffff, EINA_TRUE);
-
-   snprintf(edf->fid, sizeof(edf->fid), "%lld-%lld-%x",
-            (long long int)t,
-            (long long int)sz,
-            crc);
-
-   mo_id_str = eina_strbuf_new();
-
-   for (i = 0; i < edf->mo_dir->mo_entries_count; i++)
-     {
-        Edje_Mo *mo_entry;
-        char out[PATH_MAX + PATH_MAX + 128];
-        char outdir[PATH_MAX];
-        char *sub_str;
-        char *mo_src;
-
-        mo_entry = &edf->mo_dir->mo_entries[i];
-
-        eina_strbuf_append_printf(mo_id_str,
-                                  "edje/mo/%i/%s/LC_MESSAGES",
-                                  mo_entry->id,
-                                  mo_entry->locale);
-        data = eet_read_direct(edf->ef,
-                               eina_strbuf_string_get(mo_id_str),
-                               &len);
-
-        if (data)
-          {
-             snprintf(outdir, sizeof(outdir),
-                      "%s/edje/%s/LC_MESSAGES",
-                      cache_path, mo_entry->locale);
-             ecore_file_mkpath(outdir);
-             mo_src = strdup(mo_entry->mo_src);
-             sub_str = strstr(mo_src, ".po");
-
-             if (sub_str)
-               sub_str[1] = 'm';
-
-             snprintf(out, sizeof(out), "%s/%s-%s",
-                      outdir, edf->fid, mo_src);
-             if (ecore_file_exists(out))
-               {
-                  if (edf->mtime > ecore_file_mod_time(out))
-                    ecore_file_remove(out);
-               }
-             if (!ecore_file_exists(out))
-               {
-                  FILE *f;
-
-                  f = fopen(out, "wb");
-                  if (f)
-                    {
-                       if (fwrite(data, len, 1, f) != 1)
-                         ERR("Could not write mo: %s: %s", out, 
strerror(errno));
-                       fclose(f);
-                    }
-                  else
-                    ERR("Could not open for writing mo: %s: %s", out, 
strerror(errno));
-               }
-             free(mo_src);
-          }
-
-        eina_strbuf_reset(mo_id_str);
-     }
-
-   eina_strbuf_free(mo_id_str);
-}
-
 Evas_Object *
 edje_smart_nested_add(Evas *evas)
 {
@@ -835,19 +748,8 @@ _edje_object_file_set_internal(Evas_Object *obj, const 
Eina_File *file, const ch
    _edje_file_add(ed, file);
    ed->block_break = EINA_FALSE;
 
-   if (ed->file && ed->file->external_dir)
-     {
-        unsigned int i;
-
-        for (i = 0; i < ed->file->external_dir->entries_count; ++i)
-          edje_module_load(ed->file->external_dir->entries[i].entry);
-     }
-
-   _edje_textblock_style_all_update(ed);
 
    ed->has_entries = EINA_FALSE;
-   if (ed->file && ed->file->mo_dir)
-     _edje_extract_mo_files(ed->file);
 
    if (ed->collection)
      {

-- 


Reply via email to