cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=638ee888d9a503e40d18689ac534efdedad9c738

commit 638ee888d9a503e40d18689ac534efdedad9c738
Author: Youngbok Shin <[email protected]>
Date:   Wed Jun 14 14:24:04 2017 -0700

    edje: add efl_version property
    
    Summary:
    efl_version will be used to figure out which version of EFL lib
    is used to develop a edje file.
    If there is no property of efl_version, it will be 1.19 as default.
    This feature is needed to fix T5548.
    
    Example:
      efl_version: 1 20
    
    @feature
    
    Test Plan: N/A
    
    Reviewers: cedric, jpeg, herdsman, zmike, raster
    
    Reviewed By: cedric
    
    Maniphest Tasks: T5548
    
    Differential Revision: https://phab.enlightenment.org/D4961
    
    Signed-off-by: Cedric BAIL <[email protected]>
---
 src/bin/edje/edje_cc.c          |  9 +++++++++
 src/bin/edje/edje_cc_handlers.c | 25 +++++++++++++++++++++++++
 src/lib/edje/edje_cache.c       |  7 +++++++
 src/lib/edje/edje_convert.c     |  2 ++
 src/lib/edje/edje_data.c        |  2 ++
 src/lib/edje/edje_private.h     |  5 +++++
 6 files changed, 50 insertions(+)

diff --git a/src/bin/edje/edje_cc.c b/src/bin/edje/edje_cc.c
index 63a62b117c..9c0ce0187b 100644
--- a/src/bin/edje/edje_cc.c
+++ b/src/bin/edje/edje_cc.c
@@ -398,6 +398,15 @@ main(int argc, char **argv)
                                * does not load nicely as a NULL or 0 value
                                * and needs a special fallback initialization
                                */
+   /* efl_version is used for specify efl's version
+    * which was used for developing a edje file.
+    * It is useful if Edje(or other EFL libs) need to keep
+    * backward compatibility.
+    * efl_version was added just after EFL 1.19.
+    * Thus, 1.19 will be default.
+    */
+   edje_file->efl_version.major = 1;
+   edje_file->efl_version.minor = 19;
    edje_file->base_scale = FROM_INT(1);
 
    source_edd();
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index 765e0a6da0..8908ec69c8 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -199,6 +199,7 @@ static void _program_free(Edje_Program *pr);
 
 static void check_has_anchors(void);
 
+static void st_efl_version(void);
 static void st_externals_external(void);
 
 static void st_images_image(void);
@@ -695,6 +696,7 @@ static void _handle_vector_image(void);
 
 New_Statement_Handler statement_handlers[] =
 {
+     {"efl_version", st_efl_version},
      {"externals.external", st_externals_external},
      IMAGE_STATEMENTS("")
      FONT_STYLE_CC_STATEMENTS("")
@@ -2141,6 +2143,29 @@ _edje_program_copy(Edje_Program *ep, Edje_Program *ep2)
 
 /** @edcsection{toplevel,Top-Level blocks} */
 
+/** @edcsubsection{toplevel_efl_version,
+ *                 Efl_version} */
+
+/**
+    @page edcref
+
+    @property
+        efl_version
+    @parameters
+        [major] [minor]
+    @effect
+        Used to show which version of EFL is used for developing a edje file.
+    @endproperty
+ */
+static void
+st_efl_version(void)
+{
+   check_arg_count(2);
+
+   edje_file->efl_version.major = parse_int(0);
+   edje_file->efl_version.minor = parse_int(1);
+}
+
 /** @edcsubsection{toplevel_externals,
  *                 Externals} */
 
diff --git a/src/lib/edje/edje_cache.c b/src/lib/edje/edje_cache.c
index c38e9433eb..7607156c32 100644
--- a/src/lib/edje/edje_cache.c
+++ b/src/lib/edje/edje_cache.c
@@ -354,6 +354,13 @@ _edje_file_open(const Eina_File *f, int *error_ret, time_t 
mtime, Eina_Bool coll
         WRN("The base_scale can not be a 0.0. It is changed the default 
value(1.0)");
      }
 
+   /* Set default efl_version if there is no version information */
+   if ((edf->efl_version.major == 0) && (edf->efl_version.minor == 0))
+     {
+        edf->efl_version.major = 1;
+        edf->efl_version.minor = 19;
+     }
+
    edf->path = eina_stringshare_add(eina_file_filename_get(f));
    edf->references = 1;
 
diff --git a/src/lib/edje/edje_convert.c b/src/lib/edje/edje_convert.c
index c8f0f1bda1..8a904aa29b 100644
--- a/src/lib/edje/edje_convert.c
+++ b/src/lib/edje/edje_convert.c
@@ -216,6 +216,8 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
    edf->size_classes = oedf->size_classes;
    edf->version = oedf->version;
    edf->feature_ver = oedf->feature_ver;
+   edf->efl_version.major = oedf->efl_version.major;
+   edf->efl_version.minor = oedf->efl_version.minor;
    edf->compiler = oedf->compiler;
 
    edf->dangling = EINA_FALSE;
diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c
index 5e3ffe5bb4..a11fd07df6 100644
--- a/src/lib/edje/edje_data.c
+++ b/src/lib/edje/edje_data.c
@@ -1034,6 +1034,8 @@ _edje_edd_init(void)
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", 
version, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "minor", 
minor, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, 
"feature_ver", feature_ver, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, 
"efl_version.major", efl_version.major, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, 
"efl_version.minor", efl_version.minor, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "base_scale", 
base_scale, EDJE_T_FLOAT);
    EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "external_dir", 
external_dir, _edje_edd_edje_external_directory);
    EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "image_dir", 
image_dir, _edje_edd_edje_image_directory);
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index 22194c53ff..e255358763 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -592,6 +592,11 @@ struct _Edje_File
    int                             version;
    int                             minor;
    int                             feature_ver;
+   struct {
+      int                          major;
+      int                          minor;
+   } efl_version;
+
    FLOAT_T                         base_scale;
 
    char                            fid[8+8+8+2];

-- 


Reply via email to