forked from enlightenment/efl
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:
parent
c1dd72fc91
commit
08b291e540
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue