evas scalecache - fix thread deadlock posssibility

there is a re-ordering of how locks are taken and this should cover
that deadlock possibility. fixes CID 1106338
This commit is contained in:
Carsten Haitzler 2014-08-14 18:10:11 +09:00
parent eec2daf31b
commit 24a1c444b0
1 changed files with 2 additions and 2 deletions

View File

@ -788,10 +788,11 @@ evas_common_rgba_image_scalecache_do_cbs(Image_Entry *ie, RGBA_Image *dst,
{ {
static RGBA_Draw_Context *ct = NULL; static RGBA_Draw_Context *ct = NULL;
SLKL(cache_lock);
im->cache.orig_usage++; im->cache.orig_usage++;
im->cache.usage_count = use_counter; im->cache.usage_count = use_counter;
im->cache.populate_count--; im->cache.populate_count--;
SLKU(im->cache.lock);
SLKL(cache_lock);
// pops++; // pops++;
if (!ct) if (!ct)
{ {
@ -800,7 +801,6 @@ evas_common_rgba_image_scalecache_do_cbs(Image_Entry *ie, RGBA_Image *dst,
ct = evas_common_draw_context_new(); ct = evas_common_draw_context_new();
evas_common_draw_context_set_render_op(ct, _EVAS_RENDER_COPY); evas_common_draw_context_set_render_op(ct, _EVAS_RENDER_COPY);
} }
SLKU(im->cache.lock);
if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888) if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888)
{ {
#ifdef EVAS_CSERVE2 #ifdef EVAS_CSERVE2