Commit: bd9005ef3b88a554c2a89e85824ed5d7a0fff33a
Author: Campbell Barton
Date:   Fri Nov 13 03:22:22 2015 +1100
Branches: master
https://developer.blender.org/rBbd9005ef3b88a554c2a89e85824ed5d7a0fff33a

Frame Server: use main render loop

Avoid duplicate checks/updates when the frameserver is used.

===================================================================

M       source/blender/render/intern/source/pipeline.c

===================================================================

diff --git a/source/blender/render/intern/source/pipeline.c 
b/source/blender/render/intern/source/pipeline.c
index a9b7ad2..fe8535a1 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -3527,7 +3527,10 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene 
*scene, Object *camera_overri
        if (!render_initialize_from_main(re, &rd, bmain, scene, NULL, 
camera_override, lay_override, 0, 1))
                return;
 
-       /* we don't support Frame Server and streaming of individual views */
+       /* MULTIVIEW_TODO:
+        * in case a new video format is added that implements get_next_frame 
multiview has to be addressed
+        * or the error throwing for R_IMF_IMTYPE_FRAMESERVER has to be 
extended for those cases as well
+        */
        if ((rd.im_format.imtype == R_IMF_IMTYPE_FRAMESERVER) && (totvideos > 
1)) {
                BKE_report(re->reports, RPT_ERROR, "Frame Server only support 
stereo output for multiview rendering");
                return;
@@ -3572,43 +3575,26 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene 
*scene, Object *camera_overri
 
        re->flag |= R_ANIMATION;
 
-       if (mh && mh->get_next_frame) {
-               /* MULTIVIEW_TODO:
-                * in case a new video format is added that implements 
get_next_frame multiview has to be addressed
-                * or the error throwing for R_IMF_IMTYPE_FRAMESERVER has to be 
extended for those cases as well
-                */
-               BLI_assert(totvideos < 2);
-
-               while (!(G.is_break == 1)) {
-                       int nf = mh->get_next_frame(re->movie_ctx_arr[0], 
&re->r, re->reports);
-                       if (nf >= 0 && nf >= scene->r.sfra && nf <= 
scene->r.efra) {
-                               scene->r.cfra = re->r.cfra = nf;
-
-                               BLI_callback_exec(re->main, (ID *)scene, 
BLI_CB_EVT_RENDER_PRE);
-
-                               do_render_all_options(re);
-                               totrendered++;
-
-                               if (re->test_break(re->tbh) == 0) {
-                                       if (!do_write_image_or_movie(re, bmain, 
scene, mh, totvideos, NULL))
-                                               G.is_break = true;
-                               }
+       {
+               for (nfra = sfra, scene->r.cfra = sfra; scene->r.cfra <= efra; 
scene->r.cfra++) {
+                       char name[FILE_MAX];
 
-                               if (G.is_break == false) {
-                                       BLI_callback_exec(re->main, (ID 
*)scene, BLI_CB_EVT_RENDER_POST); /* keep after file save */
-                                       BLI_callback_exec(re->main, (ID 
*)scene, BLI_CB_EVT_RENDER_WRITE);
-                               }
-                       }
-                       else {
-                               if (re->test_break(re->tbh)) {
-                                       G.is_break = true;
+                       /* Special case for 'mh->get_next_frame'
+                        * this overrides regular frame stepping logic */
+                       if (mh->get_next_frame) {
+                               while (G.is_break == false) {
+                                       int nfra_test = 
mh->get_next_frame(re->movie_ctx_arr[0], &re->r, re->reports);
+                                       if (nfra_test >= 0 && nfra_test >= sfra 
&& nfra_test <= efra) {
+                                               nfra = nfra_test;
+                                               break;
+                                       }
+                                       else {
+                                               if (re->test_break(re->tbh)) {
+                                                       G.is_break = true;
+                                               }
+                                       }
                                }
                        }
-               }
-       }
-       else {
-               for (nfra = sfra, scene->r.cfra = sfra; scene->r.cfra <= efra; 
scene->r.cfra++) {
-                       char name[FILE_MAX];
 
                        /* Here is a feedback loop exists -- render 
initialization requires updated
                         * render layers settings which could be animated, but 
scene evaluation for

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to