From 372b58745c099575f98a2136b98aeef4cf75f5c6 Mon Sep 17 00:00:00 2001 From: Joogab Yun Date: Fri, 20 Nov 2015 14:37:52 +0900 Subject: [PATCH] Evas: Fix bug in evas_cache_image_dirty() Summary: Code which shouldn't be removed was removed by '800279c23bdb0e925f112c96516dcc96a5487684' Reviewers: spacegrapher, cedric, jpeg Reviewed By: jpeg Subscribers: scholb.kim, dkdk, wonsik, cedric Differential Revision: https://phab.enlightenment.org/D3278 Change-Id: I9ba30148010eed084a92e32c292504dba5337036 --- src/lib/evas/cache/evas_cache_image.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/lib/evas/cache/evas_cache_image.c b/src/lib/evas/cache/evas_cache_image.c index 6220fbc..f6fd2a7 100644 --- a/src/lib/evas/cache/evas_cache_image.c +++ b/src/lib/evas/cache/evas_cache_image.c @@ -973,16 +973,20 @@ evas_cache_image_dirty(Image_Entry *im, unsigned int x, unsigned int y, unsigned cache = im->cache; if (!(im->flags.dirty)) { - im_dirty = - evas_cache_image_copied_data(cache, im->w, im->h, - evas_cache_image_pixels(im), - im->flags.alpha, im->space); - if (!im_dirty) goto on_error; - if (cache->func.debug) cache->func.debug("dirty-src", im); - cache->func.dirty(im_dirty, im); - if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); - im_dirty->references = 1; - evas_cache_image_drop(im); + if (im->references == 1) im_dirty = im; + else + { + im_dirty = + evas_cache_image_copied_data(cache, im->w, im->h, + evas_cache_image_pixels(im), + im->flags.alpha, im->space); + if (!im_dirty) goto on_error; + if (cache->func.debug) cache->func.debug("dirty-src", im); + cache->func.dirty(im_dirty, im); + if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); + im_dirty->references = 1; + evas_cache_image_drop(im); + } _evas_cache_image_dirty_add(im_dirty); } -- 2.7.4