From abffaa922d53e997a6b0c897f5314a5782a19bbe Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Mon, 1 Aug 2011 14:56:26 +0000 Subject: [PATCH] evas: wipe out cache in the right order. SVN revision: 61956 --- legacy/evas/src/lib/cache/evas_cache_image.c | 6 +++--- legacy/evas/src/lib/canvas/evas_object_image.c | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/legacy/evas/src/lib/cache/evas_cache_image.c b/legacy/evas/src/lib/cache/evas_cache_image.c index 9647c2dec7..b11f7dae3c 100644 --- a/legacy/evas/src/lib/cache/evas_cache_image.c +++ b/legacy/evas/src/lib/cache/evas_cache_image.c @@ -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 diff --git a/legacy/evas/src/lib/canvas/evas_object_image.c b/legacy/evas/src/lib/canvas/evas_object_image.c index d6ecc9829b..520423eaf7 100644 --- a/legacy/evas/src/lib/canvas/evas_object_image.c +++ b/legacy/evas/src/lib/canvas/evas_object_image.c @@ -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