zmike pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=dc14257c96c4debae9c5614e9618a4764b45dc80
commit dc14257c96c4debae9c5614e9618a4764b45dc80 Author: Mike Blumenkrantz <[email protected]> Date: Fri Feb 14 08:33:32 2020 -0500 Revert "evas: remove image_load from the engine." Summary: This reverts commit 867d826395f988b9a9cbc3b5f93bf57ce031885d. Depends on D11337 Reviewers: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11338 --- src/lib/evas/include/evas_private.h | 1 + src/modules/evas/engines/gl_generic/evas_engine.c | 11 +++++++++ .../evas/engines/software_generic/evas_engine.c | 28 ++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index e7de463987..01bac6f607 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1349,6 +1349,7 @@ struct _Evas_Func void *(*polygon_points_clear) (void *engine, void *polygon); void (*polygon_draw) (void *engine, void *data, void *context, void *surface, void *polygon, int x, int y, Eina_Bool do_async); + void *(*image_load) (void *engine, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo); void *(*image_mmap) (void *engine, Eina_File *f, const char *key, int *error, Evas_Image_Load_Opts *lo); void *(*image_new_from_data) (void *engine, int w, int h, DATA32 *image_data, int alpha, Evas_Colorspace cspace); void *(*image_new_from_copied_data) (void *engine, int w, int h, DATA32 *image_data, int alpha, Evas_Colorspace cspace); diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c index 4ae962a48c..3f4c36c73b 100644 --- a/src/modules/evas/engines/gl_generic/evas_engine.c +++ b/src/modules/evas/engines/gl_generic/evas_engine.c @@ -613,6 +613,16 @@ eng_image_native_get(void *engine EINA_UNUSED, void *image) return n; } +static void * +eng_image_load(void *engine, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo) +{ + Evas_Engine_GL_Context *gl_context; + + *error = EVAS_LOAD_ERROR_NONE; + gl_context = gl_generic_context_find(engine, 1); + return evas_gl_common_image_load(gl_context, file, key, lo, error); +} + static void * eng_image_mmap(void *engine, Eina_File *f, const char *key, int *error, Evas_Image_Load_Opts *lo) { @@ -3204,6 +3214,7 @@ module_open(Evas_Module *em) ORD(polygon_points_clear); ORD(polygon_draw); + ORD(image_load); ORD(image_mmap); ORD(image_new_from_data); ORD(image_new_from_copied_data); diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 4d145ad69e..d2f0381732 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -1204,6 +1204,33 @@ eng_image_native_get(void *data EINA_UNUSED, void *image) return n; } +static void * +eng_image_load(void *data EINA_UNUSED, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo) +{ + *error = EVAS_LOAD_ERROR_NONE; +#ifdef EVAS_CSERVE2 + if (evas_cserve2_use_get()) + { + Image_Entry *ie; + ie = evas_cache2_image_open(evas_common_image_cache2_get(), + file, key, lo, error); + if (ie) + { + *error = evas_cache2_image_open_wait(ie); + if ((*error != EVAS_LOAD_ERROR_NONE) && ie->animated.animated) + { + evas_cache2_image_close(ie); + goto use_local_cache; + } + } + return ie; + } +use_local_cache: +#endif + + return evas_common_load_image_from_file(file, key, lo, error); +} + static void * eng_image_mmap(void *data EINA_UNUSED, Eina_File *f, const char *key, int *error, Evas_Image_Load_Opts *lo) { @@ -4637,6 +4664,7 @@ static Evas_Func func = eng_polygon_points_clear, eng_polygon_draw, /* image draw funcs */ + eng_image_load, eng_image_mmap, eng_image_new_from_data, eng_image_new_from_copied_data, --
