diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-03-04 16:40:24 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-03-04 16:40:24 +0400 |
commit | f691ee06275652419e822d5a269c63cfa169a837 (patch) | |
tree | b6864ee80bf0fc9747cac371a4405592a5b505e3 /source/blender/render | |
parent | 4cfa28b5edfaba6f2d943f45122a55e9af2f9513 (diff) |
Fix #34501: Painting on image editor with texture brush causes memory leaks in render module
Issue was caused by svn rev54721 where donequeue wasn't fully handled
in cases rendering was canceled, which lead to some render results
unfreed.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 8c394b00730..05baa667f9b 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -967,7 +967,20 @@ static void threaded_tile_processor(Render *re) if ((g_break=re->test_break(re->tbh))) break; } - + + if (g_break) { + /* review the done queue and handle all the render parts, + * so no unfreed render result are lurking around + */ + BLI_thread_queue_nowait(donequeue); + while ((pa = BLI_thread_queue_pop(donequeue))) { + if (pa->result) { + render_result_free_list(&pa->fullresult, pa->result); + pa->result = NULL; + } + } + } + BLI_thread_queue_free(donequeue); BLI_thread_queue_free(workqueue); |