Revert "evas: remove unused function evas_cache_engine_image_request."

Summary:
This reverts commit 90e1ca7154.
Depends on D11334

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11335
This commit is contained in:
Mike Blumenkrantz 2020-02-14 08:33:13 -05:00
parent c1dd72fc91
commit 08b291e540
2 changed files with 70 additions and 0 deletions

View File

@ -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);

View File

@ -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)
{