Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2013-03-04 16:40:24 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-03-04 16:40:24 +0400
commitf691ee06275652419e822d5a269c63cfa169a837 (patch)
treeb6864ee80bf0fc9747cac371a4405592a5b505e3 /source/blender/render
parent4cfa28b5edfaba6f2d943f45122a55e9af2f9513 (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.c15
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);