jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8e9ab6440fd89b6c35d419a7198ca0b9ccc1ff61
commit 8e9ab6440fd89b6c35d419a7198ca0b9ccc1ff61 Author: Jean-Philippe Andre <jp.an...@samsung.com> Date: Tue Aug 18 15:11:23 2015 +0900 Evas filters: Fix massive memleak with async sw render Oooops, the flag stolen meant that we don't hold any reference on this buffer anymore, which meant we should not increase the refcount here! @fix --- src/lib/evas/filters/evas_filter.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib/evas/filters/evas_filter.c b/src/lib/evas/filters/evas_filter.c index 75e36a4..5499608 100644 --- a/src/lib/evas/filters/evas_filter.c +++ b/src/lib/evas/filters/evas_filter.c @@ -503,7 +503,7 @@ _filter_buffer_data_set(Evas_Filter_Context *ctx, int bufid, void *data, fb->h = h; fb->backing = _rgba_image_alloc(fb, data); - fb->allocated = (!data && (fb->backing != NULL)); + fb->allocated = (fb->backing != NULL); return fb->allocated; } @@ -606,14 +606,12 @@ evas_filter_buffer_backing_steal(Evas_Filter_Context *ctx, int bufid) buffer = _filter_buffer_get(ctx, bufid); if (!buffer) return NULL; + // we don't hold any reference on this buffer anymore buffer->stolen = EINA_TRUE; if (ctx->gl_engine) return buffer->glimage; - if (ctx->async && buffer->backing) - buffer->backing->cache_entry.references++; - return buffer->backing; } --