From 18d05037412fcb51b260be3d8c00fcdd01665e03 Mon Sep 17 00:00:00 2001 From: cedric Date: Fri, 4 Jun 2010 15:21:12 +0000 Subject: [PATCH] * evas: make it possible to call unload_all from surface_alloc. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@49448 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/cache/evas_cache_image.c | 11 +++++++++-- src/lib/engines/common/evas_image_main.c | 2 -- src/lib/include/evas_common.h | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/lib/cache/evas_cache_image.c b/src/lib/cache/evas_cache_image.c index 5d03422..3d3bd12 100644 --- a/src/lib/cache/evas_cache_image.c +++ b/src/lib/cache/evas_cache_image.c @@ -1346,7 +1346,10 @@ evas_cache_image_load_data(Image_Entry *im) LKL(im->lock); #endif + im->flags.in_progress = EINA_TRUE; error = cache->func.load(im); + im->flags.in_progress = EINA_FALSE; + #ifdef BUILD_ASYNC_PRELOAD LKU(im->lock); #endif @@ -1377,10 +1380,14 @@ evas_cache_image_unload_data(Image_Entry *im) assert(im->cache); cache = im->cache; + if (im->flags.in_progress) return ; + + evas_cache_image_preload_cancel(im, NULL); + #ifdef BUILD_ASYNC_PRELOAD LKL(im->lock); #endif - if ((!im->flags.loaded) || (!im->file) || + if ((!im->flags.loaded) || (!im->file) || (!im->info.module) || (im->flags.dirty)) { #ifdef BUILD_ASYNC_PRELOAD @@ -1390,7 +1397,7 @@ evas_cache_image_unload_data(Image_Entry *im) } evas_common_rgba_image_scalecache_dirty(im); cache->func.destructor(im); - + #ifdef BUILD_ASYNC_PRELOAD LKU(im->lock); #endif diff --git a/src/lib/engines/common/evas_image_main.c b/src/lib/engines/common/evas_image_main.c index a86962e..d2efb67 100644 --- a/src/lib/engines/common/evas_image_main.c +++ b/src/lib/engines/common/evas_image_main.c @@ -191,8 +191,6 @@ evas_common_rgba_image_unload(Image_Entry *ie) { RGBA_Image *im = (RGBA_Image *) ie; - evas_cache_image_preload_cancel(ie, NULL); - if (!ie->flags.loaded) return; if ((!ie->info.module) && (!ie->data1)) return; if (!ie->file) return; diff --git a/src/lib/include/evas_common.h b/src/lib/include/evas_common.h index 9e76263..d2669ca 100644 --- a/src/lib/include/evas_common.h +++ b/src/lib/include/evas_common.h @@ -507,6 +507,7 @@ struct _RGBA_Image_Loadopts struct _Image_Entry_Flags { Eina_Bool loaded : 1; + Eina_Bool in_progress : 1; Eina_Bool dirty : 1; Eina_Bool activ : 1; Eina_Bool need_data : 1; -- 2.7.4