zmike pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=08b291e540902dccced85591f40ba2624d5cb0d4

commit 08b291e540902dccced85591f40ba2624d5cb0d4
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Fri Feb 14 08:33:13 2020 -0500

    Revert "evas: remove unused function evas_cache_engine_image_request."
    
    Summary:
    This reverts commit 90e1ca715402371575104814162bcddd3664a8ba.
    Depends on D11334
    
    Reviewers: raster
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D11335
---
 src/lib/evas/cache/evas_cache.h              |  1 +
 src/lib/evas/cache/evas_cache_engine_image.c | 69 ++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+)

diff --git a/src/lib/evas/cache/evas_cache.h b/src/lib/evas/cache/evas_cache.h
index cccb986afd..7475bc8a79 100644
--- a/src/lib/evas/cache/evas_cache.h
+++ b/src/lib/evas/cache/evas_cache.h
@@ -150,6 +150,7 @@ EAPI int                      
evas_cache_engine_image_usage_get(Evas_Cache_Engin
 EAPI int                      
evas_cache_engine_image_get(Evas_Cache_Engine_Image *cache);
 EAPI void                     
evas_cache_engine_image_set(Evas_Cache_Engine_Image *cache, int limit);
 
+EAPI Engine_Image_Entry*      
evas_cache_engine_image_request(Evas_Cache_Engine_Image *cache, const char 
*file, const char *key, Evas_Image_Load_Opts *lo, void *engine_data, int 
*error);
 EAPI void                     
evas_cache_engine_parent_not_needed(Engine_Image_Entry *eim);
 EAPI Engine_Image_Entry*      
evas_cache_engine_image_engine(Evas_Cache_Engine_Image *cache, void 
*engine_data);
 EAPI void                     evas_cache_engine_image_drop(Engine_Image_Entry 
*eim);
diff --git a/src/lib/evas/cache/evas_cache_engine_image.c 
b/src/lib/evas/cache/evas_cache_engine_image.c
index 65d073aa71..3e98c01e5b 100644
--- a/src/lib/evas/cache/evas_cache_engine_image.c
+++ b/src/lib/evas/cache/evas_cache_engine_image.c
@@ -288,6 +288,75 @@ evas_cache_engine_image_shutdown(Evas_Cache_Engine_Image 
*cache)
    free(cache);
 }
 
+EAPI Engine_Image_Entry *
+evas_cache_engine_image_request(Evas_Cache_Engine_Image *cache,
+                                const char *file, const char *key,
+                                Evas_Image_Load_Opts *lo, void *data,
+                                int *error)
+{
+   Engine_Image_Entry *eim;
+   Image_Entry *im;
+   const char *ekey;
+
+   assert(cache != NULL);
+
+   *error = EVAS_LOAD_ERROR_NONE;
+
+   ekey = NULL;
+   eim = NULL;
+
+   im = evas_cache_image_request(cache->parent, file, key, lo, error);
+   if (!im) goto on_error;
+
+   if (cache->func.key) ekey = cache->func.key(im, file, key, lo, data);
+   else ekey = eina_stringshare_add(im->cache_key);
+   if (!ekey)
+     {
+        *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
+        goto on_error;
+     }
+
+   eim = eina_hash_find(cache->activ, ekey);
+   if (eim)
+     {
+        evas_cache_image_drop(im);
+        goto on_ok;
+     }
+
+   eim = eina_hash_find(cache->inactiv, ekey);
+   if (eim)
+     {
+        _evas_cache_engine_image_remove_activ(cache, eim);
+        _evas_cache_engine_image_make_active(cache, eim, ekey);
+        evas_cache_image_drop(im);
+        goto on_ok;
+     }
+
+   eim = _evas_cache_engine_image_alloc(cache, im, ekey);
+   if (!eim)
+     {
+        *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
+        return NULL;
+     }
+
+   *error = cache->func.constructor(eim, data);
+   if (*error != EVAS_LOAD_ERROR_NONE) goto on_error;
+   if (cache->func.debug) cache->func.debug("constructor-engine", eim);
+
+on_ok:
+   eim->references++;
+   return eim;
+
+on_error:
+   if (!eim)
+     {
+        if (im) evas_cache_image_drop(im);
+     }
+   else _evas_cache_engine_image_dealloc(cache, eim);
+
+   return NULL;
+}
+
 EAPI void
 evas_cache_engine_image_drop(Engine_Image_Entry *eim)
 {

-- 


Reply via email to