fix possible thread lock issue - scalecache wasnt locked in 1

circumstance.



SVN revision: 56037
This commit is contained in:
Carsten Haitzler 2011-01-11 05:43:10 +00:00
parent 3ed55a28d8
commit 04ab07667b
1 changed files with 4 additions and 0 deletions

View File

@ -247,6 +247,7 @@ _sci_find(RGBA_Image *im,
_sci_fix_newest(im);
if (sci->im)
{
LKL(cache_lock);
evas_common_rgba_image_free(&sci->im->cache_entry);
if (!sci->forced_unload)
cache_size -= sci->dst_w * sci->dst_h * 4;
@ -254,6 +255,7 @@ _sci_find(RGBA_Image *im,
cache_size -= sci->size_adjust;
// INF(" 1- %i", sci->dst_w * sci->dst_h * 4);
cache_list = eina_inlist_remove(cache_list, (Eina_Inlist *)sci);
LKU(cache_lock);
}
#ifdef EVAS_FRAME_QUEUING
RWLKU(sci->lock);
@ -309,6 +311,7 @@ _cache_prune(Scaleitem *notsci, Eina_Bool copies_only)
#endif
if (sci->im)
{
LKL(cache_lock);
evas_common_rgba_image_free(&sci->im->cache_entry);
sci->im = NULL;
sci->usage = 0;
@ -321,6 +324,7 @@ _cache_prune(Scaleitem *notsci, Eina_Bool copies_only)
// INF(" 2- %i", sci->dst_w * sci->dst_h * 4);
cache_list = eina_inlist_remove(cache_list, (Eina_Inlist *)sci);
memset(sci, 0, sizeof(Eina_Inlist));
LKU(cache_lock);
}
#ifdef EVAS_FRAME_QUEUING
RWLKU(sci->lock);