diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 0a2fdd12db1..14cd40a4ca3 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1839,26 +1839,30 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra) { bMovieHandle *mh= BKE_get_movie_handle(scene->r.imtype); int cfrao= scene->r.cfra; + int movie_init= 0; /* ugly global still... is to prevent renderwin events and signal subsurfs etc to make full resol */ /* is also set by caller renderwin.c */ G.rendering= 1; - /* confusing... scene->r or re->r? make a decision once! */ if(BKE_imtype_is_movie(scene->r.imtype)) - mh->start_movie(&scene->r, re->rectx, re->recty); - + movie_init= 1; + if (mh->get_next_frame) { while (!(G.afbreek == 1)) { int nf = mh->get_next_frame(); if (nf >= 0 && nf >= scene->r.sfra && nf <= scene->r.efra) { scene->r.cfra = nf; - re->r.cfra= scene->r.cfra; /* weak.... */ /* on each frame initialize, this for py scripts that define renderdata settings */ if(!render_initialize_from_scene(re, scene)) break; + if(movie_init) { /* only now the rectx/recty is set */ + mh->start_movie(&re->r, re->rectx, re->recty); + movie_init= 0; + } + do_render_all_options(re); if(re->test_break() == 0) { @@ -1875,6 +1879,11 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra) if(!render_initialize_from_scene(re, scene)) break; + if(movie_init) { /* only now the rectx/recty is set */ + mh->start_movie(&re->r, re->rectx, re->recty); + movie_init= 0; + } + do_render_all_options(re); if(re->test_break() == 0) {