zmike pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6b046ec845b6e0dc5d87f8d6f6524d1794678727

commit 6b046ec845b6e0dc5d87f8d6f6524d1794678727
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Mar 4 13:36:57 2019 -0500

    efl.gfx: remove Efl.Gfx.Image_Load_Error
    
    Summary:
    this is now implemented through Eina.Error
    
    ref T7718
    
    Depends on D8066
    
    Reviewers: cedric
    
    Reviewed By: cedric
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl_api
    
    Maniphest Tasks: T7718
    
    Differential Revision: https://phab.enlightenment.org/D8067
---
 src/lib/edje/edje_load.c                           |  2 +-
 src/lib/edje/efl_canvas_layout.eo                  |  2 +-
 src/lib/efl/interfaces/efl_gfx_image.eo            |  2 +-
 .../interfaces/efl_gfx_image_load_controller.eo    |  2 +-
 src/lib/efl/interfaces/efl_gfx_types.eot           | 28 +++----
 src/lib/evas/canvas/efl_canvas_image.c             | 10 ++-
 src/lib/evas/canvas/efl_canvas_proxy.c             |  2 +-
 src/lib/evas/canvas/efl_canvas_scene3d.c           |  4 +-
 src/lib/evas/canvas/evas_image_legacy.c            | 21 +++--
 src/lib/evas/canvas/evas_image_private.h           |  2 +-
 src/lib/evas/canvas/evas_main.c                    | 97 ++++++++++++++++++++++
 src/lib/evas/canvas/evas_object_image.c            | 20 +++--
 src/lib/evas/include/evas_common_private.h         |  2 +-
 src/lib/evas/include/evas_private.h                |  5 +-
 src/lib/evas/vg/evas_vg_cache.c                    |  2 +-
 src/modules/evas/engines/gl_common/evas_gl_image.c |  8 +-
 src/modules/evas/vg_savers/eet/evas_vg_save_eet.c  |  2 +-
 src/modules/evas/vg_savers/svg/evas_vg_save_svg.c  |  4 +-
 18 files changed, 162 insertions(+), 53 deletions(-)

diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c
index 9256d43acf..a323f93a9f 100644
--- a/src/lib/edje/edje_load.c
+++ b/src/lib/edje/edje_load.c
@@ -171,7 +171,7 @@ _efl_canvas_layout_efl_file_group_get(Eo *obj EINA_UNUSED, 
Edje *ed)
    return ed->group;
 }
 
-EOLIAN Efl_Gfx_Image_Load_Error
+EOLIAN Eina_Error
 _efl_canvas_layout_layout_load_error_get(const Eo *obj EINA_UNUSED, Edje *ed)
 {
    switch (ed->load_error)
diff --git a/src/lib/edje/efl_canvas_layout.eo 
b/src/lib/edje/efl_canvas_layout.eo
index 5886c8ec20..8bcc728717 100644
--- a/src/lib/edje/efl_canvas_layout.eo
+++ b/src/lib/edje/efl_canvas_layout.eo
@@ -77,7 +77,7 @@ class @beta Efl.Canvas.Layout extends Efl.Canvas.Group 
implements Efl.File, Efl.
               [[Gets the (last) file loading error for a given object.]]
           }
           values {
-             error: Efl.Gfx.Image_Load_Error(Efl.Gfx.Image_Load_Error.none); 
[[The load error code.]]
+             error: Eina.Error; [[The load error code.]]
           }
       }
       content_remove {
diff --git a/src/lib/efl/interfaces/efl_gfx_image.eo 
b/src/lib/efl/interfaces/efl_gfx_image.eo
index eb23f3fe30..5d42432aba 100644
--- a/src/lib/efl/interfaces/efl_gfx_image.eo
+++ b/src/lib/efl/interfaces/efl_gfx_image.eo
@@ -208,7 +208,7 @@ interface @beta Efl.Gfx.Image
              [[Gets the (last) file loading error for a given object.]]
          }
          values {
-            error: Efl.Gfx.Image_Load_Error(Efl.Gfx.Image_Load_Error.none); 
[[The load error code.]]
+            error: Eina.Error; [[The load error code.]]
          }
       }
    }
diff --git a/src/lib/efl/interfaces/efl_gfx_image_load_controller.eo 
b/src/lib/efl/interfaces/efl_gfx_image_load_controller.eo
index 4771be1478..1727e578e6 100644
--- a/src/lib/efl/interfaces/efl_gfx_image_load_controller.eo
+++ b/src/lib/efl/interfaces/efl_gfx_image_load_controller.eo
@@ -180,6 +180,6 @@ interface @beta Efl.Gfx.Image_Load_Controller
    }
    events {
       load,done: void; [[Called when he image was loaded]]
-      load,error: Efl.Gfx.Image_Load_Error; [[Called when an error happened 
during image loading]]
+      load,error: Eina.Error; [[Called when an error happened during image 
loading]]
    }
 }
diff --git a/src/lib/efl/interfaces/efl_gfx_types.eot 
b/src/lib/efl/interfaces/efl_gfx_types.eot
index 6f64ce30f0..283c9286dd 100644
--- a/src/lib/efl/interfaces/efl_gfx_types.eot
+++ b/src/lib/efl/interfaces/efl_gfx_types.eot
@@ -188,22 +188,6 @@ enum Efl.Gfx.Hint_Aspect
               aspect.]]
 }
 
-enum Efl.Gfx.Image_Load_Error
-{
-   [[Image or Edje load error type]]
-   none = 0,                       [[No error on load]]
-   generic = 1,                    [[A non-specific error occurred]]
-   does_not_exist = 2,             [[File (or file path) does not exist]]
-   permission_denied = 3,          [[Permission denied to an existing file (or 
path)]]
-   resource_allocation_failed = 4, [[Allocation of resources failure prevented 
load]]
-   corrupt_file = 5,               [[File corrupt (but was detected as a known 
format)]]
-   unknown_format = 6,             [[File is not a known format]]
-   cancelled = 7,                  [[Reading operation has been cancelled 
during decoding]]
-   incompatible_file = 8,          [[(Edje only) The file pointed to is 
incompatible, i.e., it doesn't match the library's current version's format.]]
-   unknown_collection = 9,         [[(Edje only) The group/collection set to 
load from was not found in the file]]
-   recursive_reference = 10        [[(Edje only) The group/collection set to 
load from had recursive references on its components]]
-}
-
 enum Efl.Gfx.Color_Class_Layer {
    [[Efl Gfx Color Class layer enum]]
    normal = 0, [[Default color]]
@@ -212,3 +196,15 @@ enum Efl.Gfx.Color_Class_Layer {
 }
 
 type Efl.Font.Size: int; [[Efl font size type]]
+
+var Efl.Gfx.Image.Load_Error.NONE: Eina.Error; [[No error on load]]
+var Efl.Gfx.Image.Load_Error.GENERIC: Eina.Error; [[A non-specific error 
occurred]]
+var Efl.Gfx.Image.Load_Error.DOES_NOT_EXIST: Eina.Error; [[File (or file path) 
does not exist]]
+var Efl.Gfx.Image.Load_Error.PERMISSION_DENIED: Eina.Error; [[Permission 
denied to an existing file (or path)]]
+var Efl.Gfx.Image.Load_Error.RESOURCE_ALLOCATION_FAILED: Eina.Error; 
[[Allocation of resources failure prevented load]]
+var Efl.Gfx.Image.Load_Error.CORRUPT_FILE: Eina.Error; [[File corrupt (but was 
detected as a known format)]]
+var Efl.Gfx.Image.Load_Error.UNKNOWN_FORMAT: Eina.Error; [[File is not a known 
format]]
+var Efl.Gfx.Image.Load_Error.CANCELLED: Eina.Error; [[Reading operation has 
been cancelled during decoding]]
+var Efl.Gfx.Image.Load_Error.INCOMPATIBLE_FILE: Eina.Error; [[(Edje only) The 
file pointed to is incompatible, i.e., it doesn't match the library's current 
version's format.]]
+var Efl.Gfx.Image.Load_Error.UNKNOWN_COLLECTION: Eina.Error; [[(Edje only) The 
group/collection set to load from was not found in the file]]
+var Efl.Gfx.Image.Load_Error.RECURSIVE_REFERENCE: Eina.Error; [[(Edje only) 
The group/collection set to load from had recursive references on its 
components]]
diff --git a/src/lib/evas/canvas/efl_canvas_image.c 
b/src/lib/evas/canvas/efl_canvas_image.c
index 0d95f2f17e..c89ee213f8 100644
--- a/src/lib/evas/canvas/efl_canvas_image.c
+++ b/src/lib/evas/canvas/efl_canvas_image.c
@@ -12,6 +12,7 @@ _evas_image_file_load(Eo *eo_obj)
    Evas_Image_Load_Opts lo;
    const Eina_File *f = efl_file_mmap_get(eo_obj);
    const char *key = efl_file_key_get(eo_obj);
+   int load_error;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(f, EINA_FALSE);
 
@@ -26,7 +27,8 @@ _evas_image_file_load(Eo *eo_obj)
    obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
    evas_object_async_block(obj);
    _evas_image_init_set(f, key, eo_obj, obj, o, &lo);
-   o->engine_data = ENFN->image_mmap(ENC, o->cur->f, o->cur->key, 
&o->load_error, &lo);
+   o->engine_data = ENFN->image_mmap(ENC, o->cur->f, o->cur->key, &load_error, 
&lo);
+   o->load_error = _evas_load_error_to_efl_gfx_image_load_error(load_error);
    o->buffer_data_set = EINA_FALSE;
    _evas_image_done_set(eo_obj, obj, o);
    o->file_size.w = o->cur->image.w;
@@ -787,11 +789,11 @@ _efl_canvas_image_efl_object_dbg_info_get(Eo *obj, void 
*pd EINA_UNUSED, Efl_Dbg
        (root))
      {
         Efl_Dbg_Info *group = EFL_DBG_INFO_LIST_APPEND(root, MY_CLASS_NAME);
-        Evas_Load_Error error = EVAS_LOAD_ERROR_GENERIC;
+        Eina_Error error = EFL_GFX_IMAGE_LOAD_ERROR_GENERIC;
 
-        error = (Evas_Load_Error) efl_gfx_image_load_error_get(obj);
+        error = efl_gfx_image_load_error_get(obj);
         EFL_DBG_INFO_APPEND(group, "Load Error", EINA_VALUE_TYPE_STRING,
-                            evas_load_error_str(error));
+                            eina_error_msg_get(error));
      }
 }
 
diff --git a/src/lib/evas/canvas/efl_canvas_proxy.c 
b/src/lib/evas/canvas/efl_canvas_proxy.c
index 734b8bc689..c8368eaed6 100644
--- a/src/lib/evas/canvas/efl_canvas_proxy.c
+++ b/src/lib/evas/canvas/efl_canvas_proxy.c
@@ -229,7 +229,7 @@ _evas_image_proxy_set(Evas_Object *eo_proxy, Evas_Object 
*eo_src)
    EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
      state_write->source = eo_src;
    EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
-   o->load_error = EVAS_LOAD_ERROR_NONE;
+   o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_NONE;;
    o->proxyerror = 0;
 
    EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, 
Evas_Object_Proxy_Data, proxy_src_write)
diff --git a/src/lib/evas/canvas/efl_canvas_scene3d.c 
b/src/lib/evas/canvas/efl_canvas_scene3d.c
index 3dff89783a..513a68ba94 100644
--- a/src/lib/evas/canvas/efl_canvas_scene3d.c
+++ b/src/lib/evas/canvas/efl_canvas_scene3d.c
@@ -9,12 +9,14 @@ _efl_canvas_scene3d_scene3d_set(Eo *eo_obj, void *pd 
EINA_UNUSED, Evas_Canvas3D_
    Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, 
EFL_CANVAS_OBJECT_CLASS);
    Evas_Image_Data *o = efl_data_scope_get(eo_obj, 
EFL_CANVAS_IMAGE_INTERNAL_CLASS);
    Evas_Image_Load_Opts lo;
+   int load_error;
 
    if (o->cur->scene == scene) return;
 
    evas_object_async_block(obj);
    _evas_image_init_set(NULL, NULL, eo_obj, obj, o, &lo);
-   o->engine_data = ENFN->image_mmap(ENC, o->cur->f, o->cur->key, 
&o->load_error, &lo);
+   o->engine_data = ENFN->image_mmap(ENC, o->cur->f, o->cur->key, &load_error, 
&lo);
+   o->load_error = _evas_load_error_to_efl_gfx_image_load_error(load_error);
    _evas_image_done_set(eo_obj, obj, o);
 
    if (scene) _evas_image_3d_set(eo_obj, scene);
diff --git a/src/lib/evas/canvas/evas_image_legacy.c 
b/src/lib/evas/canvas/evas_image_legacy.c
index 88052a7deb..81e5af7926 100644
--- a/src/lib/evas/canvas/evas_image_legacy.c
+++ b/src/lib/evas/canvas/evas_image_legacy.c
@@ -393,7 +393,7 @@ EAPI Evas_Load_Error
 evas_object_image_load_error_get(const Evas_Object *obj)
 {
    EVAS_IMAGE_API(obj, EVAS_LOAD_ERROR_GENERIC);
-   return efl_gfx_image_load_error_get(obj);
+   return 
_efl_gfx_image_load_error_to_evas_load_error(efl_gfx_image_load_error_get(obj));
 }
 
 EAPI void
@@ -542,7 +542,7 @@ evas_object_image_native_surface_set(Evas_Object *eo_obj, 
Evas_Native_Surface *s
      {
         Evas_Image_Data *o = efl_data_scope_get(eo_obj, 
EFL_CANVAS_IMAGE_INTERNAL_CLASS);
 
-        o->load_error = EVAS_LOAD_ERROR_GENERIC;
+        o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_GENERIC;
      }
 }
 
@@ -669,7 +669,7 @@ evas_object_image_data_set(Eo *eo_obj, void *data)
              o->changed = EINA_TRUE;
              evas_object_change(eo_obj, obj);
           }
-        o->load_error = EVAS_LOAD_ERROR_NONE;
+        o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_NONE;
         if ((o->cur->image.w != 0) || (o->cur->image.h != 0))
           resize_call = EINA_TRUE;
 
@@ -718,6 +718,7 @@ evas_object_image_data_get(const Eo *eo_obj, Eina_Bool 
for_writing)
    void *pixels = NULL;
    int stride = 0;
    DATA32 *data;
+   int load_error;
 
    if (!o->engine_data) return NULL;
 
@@ -731,7 +732,8 @@ evas_object_image_data_get(const Eo *eo_obj, Eina_Bool 
for_writing)
      ENFN->image_scale_hint_set(ENC, o->engine_data, o->scale_hint);
    if (ENFN->image_content_hint_set)
      ENFN->image_content_hint_set(ENC, o->engine_data, o->content_hint);
-   pixels = ENFN->image_data_get(ENC, o->engine_data, for_writing, &data, 
&o->load_error, &tofree);
+   pixels = ENFN->image_data_get(ENC, o->engine_data, for_writing, &data, 
&load_error, &tofree);
+   o->load_error = _evas_load_error_to_efl_gfx_image_load_error(load_error);
 
    /* if we fail to get engine_data, we have to return NULL */
    if (!pixels || !data) goto error;
@@ -1110,6 +1112,7 @@ evas_object_image_data_convert(Evas_Object *eo_obj, 
Evas_Colorspace to_cspace)
    void *engine_data;
    DATA32 *data;
    void* result = NULL;
+   int load_error;
 
    static int warned = 0;
    if (!warned)
@@ -1130,7 +1133,8 @@ evas_object_image_data_convert(Evas_Object *eo_obj, 
Evas_Colorspace to_cspace)
         ENFN->image_data_preload_cancel(ENC, o->engine_data, eo_obj, 
EINA_TRUE);
      }
    data = NULL;
-   engine_data = ENFN->image_data_get(ENC, o->engine_data, 0, &data, 
&o->load_error, NULL);
+   engine_data = ENFN->image_data_get(ENC, o->engine_data, 0, &data, 
&load_error, NULL);
+   o->load_error = _evas_load_error_to_efl_gfx_image_load_error(load_error);
    result = _evas_image_data_convert_internal(o, data, to_cspace);
    if (engine_data)
      o->engine_data = ENFN->image_data_put(ENC, engine_data, data);
@@ -1184,6 +1188,7 @@ evas_object_image_pixels_import(Evas_Object *eo_obj, 
Evas_Pixel_Import_Source *p
 
    Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, 
EFL_CANVAS_OBJECT_CLASS);
    Evas_Image_Data *o;
+   int load_error;
 
    static int warned = 0;
    if (!warned)
@@ -1211,7 +1216,8 @@ evas_object_image_pixels_import(Evas_Object *eo_obj, 
Evas_Pixel_Import_Source *p
                                          o->engine_data,
                                          1,
                                          &image_pixels,
-                                         &o->load_error);
+                                         &load_error);
+                  o->load_error = 
_evas_load_error_to_efl_gfx_image_load_error(load_error);
 /* FIXME: need to actualyl support this */
 /*               memcpy(image_pixels, pixels->rows, o->cur->image.w * 
o->cur->image.h * 4);*/
                   if (o->engine_data)
@@ -1232,7 +1238,8 @@ evas_object_image_pixels_import(Evas_Object *eo_obj, 
Evas_Pixel_Import_Source *p
                {
                   DATA32 *image_pixels = NULL;
 
-                  o->engine_data = ENFN->image_data_get(ENC, o->engine_data, 
1, &image_pixels,&o->load_error, NULL);
+                  o->engine_data = ENFN->image_data_get(ENC, o->engine_data, 
1, &image_pixels, &load_error, NULL);
+                  o->load_error = 
_evas_load_error_to_efl_gfx_image_load_error(load_error);
                   if (image_pixels)
                     evas_common_convert_yuv_422p_601_rgba((DATA8 **) 
pixels->rows, (DATA8 *) image_pixels, o->cur->image.w, o->cur->image.h);
                   if (o->engine_data)
diff --git a/src/lib/evas/canvas/evas_image_private.h 
b/src/lib/evas/canvas/evas_image_private.h
index 7c197717a5..230bf5e002 100644
--- a/src/lib/evas/canvas/evas_image_private.h
+++ b/src/lib/evas/canvas/evas_image_private.h
@@ -111,7 +111,7 @@ struct _Evas_Image_Data
    void             *plane;
 
    int               pixels_checked_out;
-   int               load_error;
+   Eina_Error        load_error; /* Efl.Gfx.Image.Load_Error */
 
    Efl_Gfx_Image_Scale_Hint   scale_hint;
    Efl_Gfx_Image_Content_Hint content_hint;
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index c38b7e5151..95e7ac4a9b 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -25,6 +25,101 @@ EAPI int lockmax = 0;
 static int _evas_init_count = 0;
 int _evas_log_dom_global = -1;
 
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_NONE = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_GENERIC = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_DOES_NOT_EXIST = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_PERMISSION_DENIED = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_CORRUPT_FILE = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_UNKNOWN_FORMAT = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_CANCELLED = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_INCOMPATIBLE_FILE = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_UNKNOWN_COLLECTION = 0;
+EAPI Eina_Error EFL_GFX_IMAGE_LOAD_ERROR_RECURSIVE_REFERENCE = 0;
+
+#define NUM_ERRORS 11
+
+const char *efl_gfx_image_load_error_msgs[] = {
+ "No error on load" ,
+ "A non-specific error occurred" ,
+ "File (or file path) does not exist" ,
+ "Permission denied to an existing file (or path)" ,
+ "Allocation of resources failure prevented load" ,
+ "File corrupt (but was detected as a known format)" ,
+ "File is not a known format" ,
+ "Reading operation has been cancelled during decoding" ,
+ "(Edje only) The file pointed to is incompatible, i.e., it doesn't match the 
library's current version's format." ,
+ "(Edje only) The group/collection set to load from was not found in the file" 
,
+ "(Edje only) The group/collection set to load from had recursive references 
on its components" 
+};
+
+static void
+_efl_gfx_image_load_error_init(void)
+{
+   Eina_Error *table[] = {
+     &EFL_GFX_IMAGE_LOAD_ERROR_NONE,
+     &EFL_GFX_IMAGE_LOAD_ERROR_GENERIC,
+     &EFL_GFX_IMAGE_LOAD_ERROR_DOES_NOT_EXIST,
+     &EFL_GFX_IMAGE_LOAD_ERROR_PERMISSION_DENIED,
+     &EFL_GFX_IMAGE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED,
+     &EFL_GFX_IMAGE_LOAD_ERROR_CORRUPT_FILE,
+     &EFL_GFX_IMAGE_LOAD_ERROR_UNKNOWN_FORMAT,
+     &EFL_GFX_IMAGE_LOAD_ERROR_CANCELLED,
+     &EFL_GFX_IMAGE_LOAD_ERROR_INCOMPATIBLE_FILE,
+     &EFL_GFX_IMAGE_LOAD_ERROR_UNKNOWN_COLLECTION,
+     &EFL_GFX_IMAGE_LOAD_ERROR_RECURSIVE_REFERENCE
+     };
+   unsigned int i;
+
+   if (EFL_GFX_IMAGE_LOAD_ERROR_GENERIC) return;
+   /* skip EFL_GFX_IMAGE_LOAD_ERROR_NONE: this should always be 0 */
+   for (i = 1; i < NUM_ERRORS; i++)
+     *(table[i]) = 
eina_error_msg_static_register(efl_gfx_image_load_error_msgs[i]);
+#undef TABLE_ENTRY
+}
+
+Eina_Error
+_evas_load_error_to_efl_gfx_image_load_error(Evas_Load_Error err)
+{
+#define TABLE_ENTRY(NAME) [EVAS_LOAD_ERROR_##NAME] = 
&EFL_GFX_IMAGE_LOAD_ERROR_##NAME
+   Eina_Error *table[] = {
+     TABLE_ENTRY(NONE),
+     TABLE_ENTRY(GENERIC),
+     TABLE_ENTRY(DOES_NOT_EXIST),
+     TABLE_ENTRY(PERMISSION_DENIED),
+     TABLE_ENTRY(RESOURCE_ALLOCATION_FAILED),
+     TABLE_ENTRY(CORRUPT_FILE),
+     TABLE_ENTRY(UNKNOWN_FORMAT),
+     TABLE_ENTRY(CANCELLED),
+     //TABLE_ENTRY(INCOMPATIBLE_FILE),
+     //TABLE_ENTRY(UNKNOWN_COLLECTION),
+     //TABLE_ENTRY(RECURSIVE_REFERENCE)
+     };
+   if (err > EVAS_LOAD_ERROR_CANCELLED) return err;
+   return *table[err];
+#undef TABLE_ENTRY
+}
+
+Evas_Load_Error
+_efl_gfx_image_load_error_to_evas_load_error(Eina_Error err)
+{
+    if (err && (err < EFL_GFX_IMAGE_LOAD_ERROR_GENERIC)) return 
EVAS_LOAD_ERROR_GENERIC;
+#define CONVERT_ERR(NAME) if (err == EFL_GFX_IMAGE_LOAD_ERROR_##NAME) return 
EVAS_LOAD_ERROR_##NAME
+   CONVERT_ERR(NONE);
+   CONVERT_ERR(GENERIC);
+   CONVERT_ERR(DOES_NOT_EXIST);
+   CONVERT_ERR(PERMISSION_DENIED);
+   CONVERT_ERR(RESOURCE_ALLOCATION_FAILED);
+   CONVERT_ERR(CORRUPT_FILE);
+   CONVERT_ERR(UNKNOWN_FORMAT);
+   CONVERT_ERR(CANCELLED);
+   //CONVERT_ERR(INCOMPATIBLE_FILE);
+   //CONVERT_ERR(UNKNOWN_COLLECTION);
+   //CONVERT_ERR(RECURSIVE_REFERENCE);
+   return EVAS_LOAD_ERROR_GENERIC;
+}
+
+
 EAPI int
 evas_init(void)
 {
@@ -81,6 +176,8 @@ evas_init(void)
    _efl_gfx_mapping_init();
    evas_focus_init();
 
+   _efl_gfx_image_load_error_init();
+
    return _evas_init_count;
 
  shutdown_filter:
diff --git a/src/lib/evas/canvas/evas_object_image.c 
b/src/lib/evas/canvas/evas_object_image.c
index 1053451ee8..1d0e128dd1 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -283,7 +283,7 @@ _evas_image_init_set(const Eina_File *f, const char *key,
           }
         ENFN->image_free(ENC, o->engine_data);
      }
-   o->load_error = EVAS_LOAD_ERROR_NONE;
+   o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_NONE;
    lo->emile.scale_down_by = o->load_opts->scale_down_by;
    lo->emile.dpi = o->load_opts->dpi;
    lo->emile.w = o->load_opts->w;
@@ -340,8 +340,8 @@ _evas_image_done_set(Eo *eo_obj, Evas_Object_Protected_Data 
*obj, Evas_Image_Dat
      }
    else
      {
-        if (o->load_error == EVAS_LOAD_ERROR_NONE)
-          o->load_error = EVAS_LOAD_ERROR_GENERIC;
+        if (o->load_error == EFL_GFX_IMAGE_LOAD_ERROR_NONE)
+          o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_GENERIC;
 
         EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
         {
@@ -854,7 +854,7 @@ _efl_canvas_image_internal_efl_gfx_image_ratio_get(const Eo 
*eo_obj EINA_UNUSED,
    return (double)o->cur->image.w / (double)o->cur->image.h;
 }
 
-EOLIAN static Efl_Gfx_Image_Load_Error
+EOLIAN static Eina_Error
 _efl_canvas_image_internal_efl_gfx_image_image_load_error_get(const Eo *eo_obj 
EINA_UNUSED, Evas_Image_Data *o)
 {
    return o->load_error;
@@ -1121,7 +1121,7 @@ _evas_image_unload(Evas_Object *eo_obj, 
Evas_Object_Protected_Data *obj, Eina_Bo
         ENFN->image_free(ENC, o->engine_data);
      }
    o->engine_data = NULL;
-   o->load_error = EVAS_LOAD_ERROR_NONE;
+   o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_NONE;
 
    EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
    {
@@ -1140,6 +1140,7 @@ void
 _evas_image_load(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, 
Evas_Image_Data *o)
 {
    Evas_Image_Load_Opts lo;
+   int load_error = 0;
 
    if (o->engine_data) return;
 
@@ -1162,7 +1163,8 @@ _evas_image_load(Evas_Object *eo_obj, 
Evas_Object_Protected_Data *obj, Evas_Imag
    lo.emile.orientation = o->load_opts->orientation;
    lo.emile.degree = 0;
    lo.skip_head = o->skip_head;
-   o->engine_data = ENFN->image_mmap(ENC, o->cur->f, o->cur->key, 
&o->load_error, &lo);
+   o->engine_data = ENFN->image_mmap(ENC, o->cur->f, o->cur->key, &load_error, 
&lo);
+   o->load_error = _evas_load_error_to_efl_gfx_image_load_error(load_error);
 
    if (o->engine_data)
      {
@@ -1191,7 +1193,7 @@ _evas_image_load(Evas_Object *eo_obj, 
Evas_Object_Protected_Data *obj, Evas_Imag
      }
    else
      {
-        o->load_error = EVAS_LOAD_ERROR_GENERIC;
+        o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_GENERIC;
      }
 }
 
@@ -1230,12 +1232,12 @@ _evas_image_load_post_update(Evas_Object *eo_obj, 
Evas_Object_Protected_Data *ob
 
         //preloading error check
         if (ENFN->image_load_error_get)
-          o->load_error = ENFN->image_load_error_get(ENC, o->engine_data);
+          o->load_error = 
_evas_load_error_to_efl_gfx_image_load_error(ENFN->image_load_error_get(ENC, 
o->engine_data));
      }
    else
      {
         o->preload = EVAS_IMAGE_PRELOAD_NONE;
-        o->load_error = EVAS_LOAD_ERROR_GENERIC;
+        o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_GENERIC;
      }
 }
 
diff --git a/src/lib/evas/include/evas_common_private.h 
b/src/lib/evas/include/evas_common_private.h
index 7fe19b7b9a..53c9fef2ec 100644
--- a/src/lib/evas/include/evas_common_private.h
+++ b/src/lib/evas/include/evas_common_private.h
@@ -636,7 +636,7 @@ struct _Image_Entry
    int                    server_id;
    int                    connect_num;
    int                    channel;
-   int                    load_error;
+   Evas_Load_Error        load_error;
 };
 
 struct _Engine_Image_Entry
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index 208f0e1000..1c06b5b9df 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1530,7 +1530,7 @@ struct _Evas_Vg_Load_Func
 
 struct _Evas_Vg_Save_Func
 {
-   int (*file_save) (Vg_File_Data *vfd, const char *file, const char *key, int 
compress);
+   Evas_Load_Error (*file_save) (Vg_File_Data *vfd, const char *file, const 
char *key, int compress);
 };
 
 #ifdef __cplusplus
@@ -1918,6 +1918,9 @@ extern Eina_Cow *evas_object_image_state_cow;
 extern Eina_Cow *evas_object_mask_cow;
 extern Eina_Cow *evas_object_events_cow;
 
+Eina_Error _evas_load_error_to_efl_gfx_image_load_error(Evas_Load_Error err);
+Evas_Load_Error _efl_gfx_image_load_error_to_evas_load_error(Eina_Error err);
+
 # define EINA_COW_STATE_WRITE_BEGIN(Obj, Write, State)          \
   EINA_COW_WRITE_BEGIN(evas_object_state_cow, Obj->State, \
                        Evas_Object_Protected_State, Write)
diff --git a/src/lib/evas/vg/evas_vg_cache.c b/src/lib/evas/vg/evas_vg_cache.c
index e3a5d60529..6022982557 100644
--- a/src/lib/evas/vg/evas_vg_cache.c
+++ b/src/lib/evas/vg/evas_vg_cache.c
@@ -171,7 +171,7 @@ _vg_file_save(Vg_File_Data *vfd, const char *file, const 
char *key, const Efl_Fi
 {
    Evas_Module       *em;
    Evas_Vg_Save_Func *saver;
-   int                error = EVAS_LOAD_ERROR_GENERIC;
+   Evas_Load_Error    error = EVAS_LOAD_ERROR_GENERIC;
    int                compress = 9;
 
    if (!file) return EINA_FALSE;
diff --git a/src/modules/evas/engines/gl_common/evas_gl_image.c 
b/src/modules/evas/engines/gl_common/evas_gl_image.c
index 03f4f1f8c2..c7a854f34d 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_image.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_image.c
@@ -811,8 +811,8 @@ evas_gl_common_image_update(Evas_Engine_GL_Context *gc, 
Evas_GL_Image *im)
              evas_cache_image_unload_data(ie);
           }
         else if (!im->tex &&
-                 ((ie->load_error == EFL_GFX_IMAGE_LOAD_ERROR_NONE) ||
-                  (ie->load_error == EFL_GFX_IMAGE_LOAD_ERROR_CANCELLED)))
+                 ((ie->load_error == EVAS_LOAD_ERROR_NONE) ||
+                  (ie->load_error == EVAS_LOAD_ERROR_CANCELLED)))
           {
              ie->load_error = evas_cache_image_load_data(ie);
              im->tex = evas_gl_common_texture_new(gc, im->im, 
im->disable_atlas);
@@ -829,8 +829,8 @@ evas_gl_common_image_update(Evas_Engine_GL_Context *gc, 
Evas_GL_Image *im)
              evas_cache_image_unload_data(ie);
           }
         else if (!im->tex &&
-                 ((ie->load_error == EFL_GFX_IMAGE_LOAD_ERROR_NONE) ||
-                  (ie->load_error == EFL_GFX_IMAGE_LOAD_ERROR_CANCELLED)))
+                 ((ie->load_error == EVAS_LOAD_ERROR_NONE) ||
+                  (ie->load_error == EVAS_LOAD_ERROR_CANCELLED)))
           {
              ie->load_error = evas_cache_image_load_data(ie);
              im->tex = evas_gl_common_texture_rgb_a_pair_new(gc, im->im);
diff --git a/src/modules/evas/vg_savers/eet/evas_vg_save_eet.c 
b/src/modules/evas/vg_savers/eet/evas_vg_save_eet.c
index 54f35e1127..a7a1bf36ae 100644
--- a/src/modules/evas/vg_savers/eet/evas_vg_save_eet.c
+++ b/src/modules/evas/vg_savers/eet/evas_vg_save_eet.c
@@ -12,7 +12,7 @@ static int _evas_vg_saver_eet_log_dom = -1;
 #endif
 #define INF(...) EINA_LOG_DOM_INFO(_evas_vg_saver_eet_log_dom, __VA_ARGS__)
 
-int
+Evas_Load_Error
 evas_vg_save_file_eet(Vg_File_Data *evg_data, const char *file, const char 
*key, int compress)
 {
    Eet_Data_Descriptor *svg_node_eet;
diff --git a/src/modules/evas/vg_savers/svg/evas_vg_save_svg.c 
b/src/modules/evas/vg_savers/svg/evas_vg_save_svg.c
index cf7854d80b..e900432d9a 100644
--- a/src/modules/evas/vg_savers/svg/evas_vg_save_svg.c
+++ b/src/modules/evas/vg_savers/svg/evas_vg_save_svg.c
@@ -129,7 +129,7 @@ _svg_node_printf(Svg_Node *parent, Eina_Strbuf *buf)
      }
 }
 
-int
+Evas_Load_Error
 evas_vg_save_file_svg(Vg_File_Data *evg_data, const char *file, const char 
*key EINA_UNUSED, int compress EINA_UNUSED)
 {
    Eina_Strbuf *buf = NULL;
@@ -138,7 +138,7 @@ evas_vg_save_file_svg(Vg_File_Data *evg_data, const char 
*file, const char *key
    if (!f)
      {
         ERR("Cannot open file '%s' for SVG save", file);
-        return EFL_GFX_IMAGE_LOAD_ERROR_GENERIC;
+        return EVAS_LOAD_ERROR_GENERIC;
      }
 
    root = vg_common_svg_create_svg_node(evg_data);

-- 


Reply via email to