evas: wipe out cache in the right order.

SVN revision: 61956
This commit is contained in:
Cedric BAIL 2011-08-01 14:56:26 +00:00
parent d0b2f5b414
commit abffaa922d
2 changed files with 10 additions and 8 deletions

View File

@ -220,7 +220,7 @@ _evas_cache_image_entry_delete(Evas_Cache_Image *cache, Image_Entry *ie)
_evas_cache_image_activ_del(ie);
_evas_cache_image_lru_del(ie);
_evas_cache_image_lru_nodata_del(ie);
cache->func.destructor(ie);
FREESTRC(ie->cache_key);
FREESTRC(ie->file);
@ -826,9 +826,9 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
_timestamp_build(&tstamp, &st);
im = _evas_cache_image_entry_new(cache, hkey, &tstamp, file, key,
lo, error);
if (!im) return NULL;
if (!im) goto on_stat_error;
if (cache->func.debug) cache->func.debug("request", im);
on_ok:
*error = EVAS_LOAD_ERROR_NONE;
#ifdef EVAS_FRAME_QUEUING

View File

@ -227,7 +227,7 @@ _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__)
o->tmpf_fd = fd;
#ifdef __linux__
snprintf(buf, sizeof(buf), "/proc/%li/fd/%i", (long)getpid(), fd);
#endif
#endif
o->tmpf = eina_stringshare_add(buf);
memcpy(dst, data, size);
munmap(dst, size);
@ -247,18 +247,20 @@ evas_object_image_memfile_set(Evas_Object *obj, void *data, int size, char *form
MAGIC_CHECK_END();
_cleanup_tmpf(obj);
evas_object_image_file_set(obj, NULL, NULL);
// invalidate the cache effectively
evas_object_image_alpha_set(obj, !o->cur.has_alpha);
evas_object_image_alpha_set(obj, !o->cur.has_alpha);
if ((size < 1) || (!data)) return;
_create_tmpf(obj, data, size, format);
evas_object_image_file_set(obj, o->tmpf, key);
if (!o->engine_data)
{
ERR("unable to load '%s' from memory", o->tmpf);
_cleanup_tmpf(obj);
return;
}
// invalidate the cache effectively
evas_object_image_alpha_set(obj, !o->cur.has_alpha);
evas_object_image_alpha_set(obj, !o->cur.has_alpha);
}
EAPI void