summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2020-02-14 08:33:13 -0500
committerMike Blumenkrantz <zmike@samsung.com>2020-02-14 08:33:13 -0500
commit08b291e540902dccced85591f40ba2624d5cb0d4 (patch)
tree4c45d8d261d3854a92fbcf0c6f99837d8803663e
parentc1dd72fc917055eb8742afd4b8f115a52c254971 (diff)
downloadefl-08b291e540902dccced85591f40ba2624d5cb0d4.tar.gz
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
-rw-r--r--src/lib/evas/cache/evas_cache.h1
-rw-r--r--src/lib/evas/cache/evas_cache_engine_image.c69
2 files changed, 70 insertions, 0 deletions
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)
{