diff options
author | Ton Roosendaal <ton@blender.org> | 2006-08-10 17:48:04 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2006-08-10 17:48:04 +0400 |
commit | 411332d953e3b961faf75c60ea01f63bd1aac924 (patch) | |
tree | c6538bca3cc12da7369f1c2c36edf22698301de3 /source | |
parent | 7440aba482f290d14094d17d179a3c3287f3ba19 (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.c | 1 | ||||
-rw-r--r-- | source/blender/src/sequence.c | 7 |
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) |