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;
 }
 

-- 


Reply via email to