diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 5c8b292ec14..5848ec4e392 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1305,9 +1305,6 @@ static void do_render_final(Render *re) re->i.starttime= PIL_check_seconds_timer(); if(re->r.scemode & R_DOSEQ) { - if (!re->result->rect32) { - re->result->rect32= MEM_callocT(sizeof(int)*re->rectx*re->recty, "do_render_final rectot"); - } 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 71c258bf3f6..730889b73a9 100644 --- a/source/blender/src/sequence.c +++ b/source/blender/src/sequence.c @@ -1279,7 +1279,7 @@ void free_imbuf_seq() END_SEQ } -/* bad levell call... renderer makes a 32 bits rect to put result in */ +/* bad levell call... */ void do_render_seq(RenderResult *rr, int cfra) { ImBuf *ibuf; @@ -1287,20 +1287,32 @@ void do_render_seq(RenderResult *rr, int cfra) G.f |= G_PLAYANIM; /* waitcursor patch */ ibuf= give_ibuf_seq(rr->rectx, rr->recty, cfra, 0); - if(ibuf && rr->rect32) { - printf("copied\n"); - memcpy(rr->rect32, ibuf->rect, 4*rr->rectx*rr->recty); - - /* if (ibuf->zbuf) { */ - /* if (R.rectz) freeN(R.rectz); */ - /* R.rectz = BLI_dupallocN(ibuf->zbuf); */ - /* } */ - - /* Let the cache limitor take care of this (schlaile) */ - /* no, doesnt seem to work for float buffer? (ton) */ - free_imbuf_seq_except(cfra); + + if(ibuf) { + if(ibuf->rect_float) { + if (!rr->rectf) + 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); + } + else if(ibuf->rect) { + if (!rr->rect32) + rr->rect32= MEM_mallocN(sizeof(int)*rr->rectx*rr->recty, "render_seq rect"); + + memcpy(rr->rect32, ibuf->rect, 4*rr->rectx*rr->recty); + + /* if (ibuf->zbuf) { */ + /* if (R.rectz) freeN(R.rectz); */ + /* R.rectz = BLI_dupallocN(ibuf->zbuf); */ + /* } */ + } + + /* Let the cache limitor take care of this (schlaile) */ + /* While render let's keep all memory available for render (ton) */ + free_imbuf_seq_except(cfra); } + G.f &= ~G_PLAYANIM; }