diff options
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); |