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:
Diffstat (limited to 'source/blender/render/intern/source/pipeline.c')
-rw-r--r--source/blender/render/intern/source/pipeline.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 85cafa07759..6b5b9716f3b 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -63,6 +63,7 @@
#include "BLI_string.h"
#include "BLI_path_util.h"
#include "BLI_fileops.h"
+#include "BLI_threads.h"
#include "BLI_rand.h"
#include "BLI_callbacks.h"
@@ -432,7 +433,10 @@ void RE_FreePersistentData(void)
/* render engines can be kept around for quick re-render, this clears all */
for (re = RenderGlobal.renderlist.first; re; re = re->next) {
if (re->engine) {
- RE_engine_free(re->engine);
+ /* if engine is currently rendering, just tag it to be freed when render is finished */
+ if (!(re->engine->flag & RE_ENGINE_RENDERING))
+ RE_engine_free(re->engine);
+
re->engine = NULL;
}
}
@@ -689,7 +693,7 @@ static void *do_part_thread(void *pa_v)
/* calculus for how much 1 pixel rendered should rotate the 3d geometry */
/* is not that simple, needs to be corrected for errors of larger viewplane sizes */
-/* called in initrender.c, initparts() and convertblender.c, for speedvectors */
+/* called in initrender.c, RE_parts_init() and convertblender.c, for speedvectors */
float panorama_pixel_rot(Render *re)
{
float psize, phi, xfac;
@@ -832,7 +836,7 @@ static void threaded_tile_processor(Render *re)
/* warning; no return here without closing exr file */
- initparts(re, TRUE);
+ RE_parts_init(re, TRUE);
if (re->result->do_exr_tile)
render_result_exr_file_begin(re);
@@ -924,7 +928,7 @@ static void threaded_tile_processor(Render *re)
g_break = 0;
BLI_end_threads(&threads);
- freeparts(re);
+ RE_parts_free(re);
re->viewplane = viewplane; /* restore viewplane, modified by pano render */
}
@@ -943,6 +947,7 @@ static void do_render_3d(Render *re)
return;
/* internal */
+ RE_parts_clamp(re);
// re->cfra= cfra; /* <- unused! */
re->scene->r.subframe = re->mblur_offs + re->field_offs;