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
path: root/source
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2006-08-10 17:48:04 +0400
committerTon Roosendaal <ton@blender.org>2006-08-10 17:48:04 +0400
commit411332d953e3b961faf75c60ea01f63bd1aac924 (patch)
treec6538bca3cc12da7369f1c2c36edf22698301de3 /source
parent7440aba482f290d14094d17d179a3c3287f3ba19 (diff)
Sequence render fix (report Johnny Matthews):
When a sequencer has mixed use of 32 bits and float images (note, Scene strip returns float image too), the old 32 bits image should be freed, otherwise it keeps saving that image.
Diffstat (limited to 'source')
-rw-r--r--source/blender/render/intern/source/pipeline.c1
-rw-r--r--source/blender/src/sequence.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 4dc88f70218..1ac8b56dd94 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -1743,6 +1743,7 @@ static void do_render_all_options(Render *re)
re->i.starttime= PIL_check_seconds_timer();
if(re->r.scemode & R_DOSEQ) {
+ /* note: do_render_seq() frees rect32 when sequencer returns float images */
if(!re->test_break())
do_render_seq(re->result, re->r.cfra);
diff --git a/source/blender/src/sequence.c b/source/blender/src/sequence.c
index e1fb7f8bcfd..cb53d1db7a1 100644
--- a/source/blender/src/sequence.c
+++ b/source/blender/src/sequence.c
@@ -1258,6 +1258,13 @@ void do_render_seq(RenderResult *rr, int cfra)
rr->rectf= MEM_mallocN(4*sizeof(float)*rr->rectx*rr->recty, "render_seq rectf");
memcpy(rr->rectf, ibuf->rect_float, 4*sizeof(float)*rr->rectx*rr->recty);
+
+ /* TSK! Since sequence render doesn't free the *rr render result, the old rect32
+ can hang around when sequence render has rendered a 32 bits one before */
+ if(rr->rect32) {
+ MEM_freeN(rr->rect32);
+ rr->rect32= NULL;
+ }
}
else if(ibuf->rect) {
if (!rr->rect32)