jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=96e58cebf788989dce8c5e8e5853d5c9423d535d
commit 96e58cebf788989dce8c5e8e5853d5c9423d535d Author: Jean-Philippe Andre <jp.an...@samsung.com> Date: Wed Mar 12 14:06:23 2014 +0900 Evas filters: Fix memory leak when destroying the object The GL buffers set to be freed were released only the async case... which doesn't make sense since GL is sync. @fix --- src/lib/evas/filters/evas_filter.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/lib/evas/filters/evas_filter.c b/src/lib/evas/filters/evas_filter.c index 5b59fcc..3389061 100644 --- a/src/lib/evas/filters/evas_filter.c +++ b/src/lib/evas/filters/evas_filter.c @@ -1863,6 +1863,7 @@ _filter_chain_run(Evas_Filter_Context *ctx) { Evas_Filter_Command *cmd; Eina_Bool ok = EINA_FALSE; + void *buffer; DEBUG_TIME_BEGIN(); @@ -1882,6 +1883,13 @@ _filter_chain_run(Evas_Filter_Context *ctx) end: ctx->running = EINA_FALSE; DEBUG_TIME_END(); + + EINA_LIST_FREE(ctx->post_run.buffers_to_free, buffer) + { + if (ctx->gl_engine) + ENFN->image_free(ENDT, buffer); + } + return ok; } @@ -1890,16 +1898,9 @@ _filter_thread_run_cb(void *data) { Evas_Filter_Context *ctx = data; Eina_Bool success; - void *buffer; success = _filter_chain_run(ctx); - EINA_LIST_FREE(ctx->post_run.buffers_to_free, buffer) - { - if (ctx->gl_engine) - ENFN->image_free(ENDT, buffer); - } - if (ctx->post_run.cb) ctx->post_run.cb(ctx, ctx->post_run.data, success); } @@ -1924,6 +1925,7 @@ evas_filter_run(Evas_Filter_Context *ctx) } ret = _filter_chain_run(ctx); + if (ctx->post_run.cb) ctx->post_run.cb(ctx, ctx->post_run.data, ret); return ret; --