Bugfixes from own collection:
authorTon Roosendaal <ton@blender.org>
Tue, 27 Jun 2006 09:48:54 +0000 (09:48 +0000)
committerTon Roosendaal <ton@blender.org>
Tue, 27 Jun 2006 09:48:54 +0000 (09:48 +0000)
- when renderwin exists, but not used for render, the ESC timer check still
  could return ESC event, due to missing flag clearing.
  (For example in sequencer, a scene strip did not update on frame advance)

- option 'single layer' set in combination with render "Do Sequence" didn't
  free the pushed layers.

source/blender/render/intern/source/pipeline.c
source/blender/src/renderwin.c
source/blender/src/sequence.c

index 6b02a41cc8d310279a6638d6529664ab74d562bf..6643d28d69bc5661cf66eb83e593e4d035508769 100644 (file)
@@ -181,6 +181,9 @@ static void free_render_result(RenderResult *res)
 /* all layers except the active one get temporally pushed away */
 static void push_render_result(Render *re)
 {
+       /* officially pushed result should be NULL... error can happen with do_seq */
+       free_render_result(re->pushedresult);
+       
        re->pushedresult= re->result;
        re->result= NULL;
 }
index 7e78501ed4e77dea7e4845f04e0f4cee8ecaa413..1d1eca596963550433c8b73683c043a687b1682f 100644 (file)
@@ -733,7 +733,6 @@ static void renderwin_init_display_cb(RenderResult *rr)
                        }
 
                        renderwin_reset_view(render_win);
-                       render_win->flags&= ~RW_FLAGS_ESCAPE;
                        render_win->active= 1;
                }
                /* make sure we are in normal draw again */
@@ -1165,6 +1164,9 @@ void BIF_init_render_callbacks(Render *re, int do_display)
        RE_error_cb(re, error_cb);
        
        G.afbreek= 0;
+       if(render_win)
+               render_win->flags &= ~RW_FLAGS_ESCAPE;
+
        /* start esc timer. ensure it happens once only */
        if(esc_timer_set==0)
                init_test_break_callback();
index 97d921102967e6d716b823f9460ea11f3c79c471..b67951b3a1c6ddfb878347c701a73daa0ae00034 100644 (file)
@@ -903,7 +903,7 @@ static void do_build_seq_ibuf(Sequence * seq, int cfra)
                                if(G.rendering)
                                        re= RE_NewRender(" do_build_seq_ibuf"); 
                                else
-                                       re= RE_NewRender(seq->scene->id.name);
+                                       re= RE_NewRender(sce->id.name);
                                
                                /* prevent eternal loop */
                                doseq= sce->r.scemode & R_DOSEQ;