boxblur tweak for w=1:h=0, speedup canvas bline draw for floatautos+audio waveform...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / vrender.C
index 42f83ef87e7d86e57a2c84a8bf7b4781fad41984..43893b2770106845d2fbe6533eadb657bc1e3d81 100644 (file)
@@ -22,6 +22,7 @@
 #include "asset.h"
 #include "bcsignals.h"
 #include "cache.h"
+#include "canvas.h"
 #include "clip.h"
 #include "condition.h"
 #include "datatype.h"
@@ -61,7 +62,7 @@ VRender::VRender(RenderEngine *renderengine)
 {
        data_type = TRACK_VIDEO;
        transition_temp = 0;
-       overlayer = new OverlayFrame(renderengine->preferences->processors);
+       overlayer = new OverlayFrame(renderengine->preferences->project_smp);
        input_temp = 0;
        vmodule_render_fragment = 0;
        playback_buffer = 0;
@@ -74,9 +75,10 @@ VRender::VRender(RenderEngine *renderengine)
 
 VRender::~VRender()
 {
-       if(input_temp) delete input_temp;
-       if(transition_temp) delete transition_temp;
-       if(overlayer) delete overlayer;
+       renderengine->wait_done();
+       delete overlayer;
+       delete input_temp;
+       delete transition_temp;
 }
 
 
@@ -97,10 +99,9 @@ Module* VRender::new_module(Track *track)
 
 int VRender::flash_output()
 {
-       if(video_out)
-               return renderengine->video->write_buffer(video_out, renderengine->get_edl());
-       else
-               return 0;
+       if( !video_out ) return 0;
+       renderengine->update_scope(video_out);
+       return renderengine->video->write_buffer(video_out, renderengine->get_edl());
 }
 
 int VRender::process_buffer(VFrame *video_out,
@@ -481,8 +482,9 @@ void VRender::run()
                        framerate_timer.update();
                }
                if(debug) printf("VRender::run %d done=%d\n", __LINE__, done);
-               if( !interrupt )
-                       interrupt = renderengine->video->interrupt;
+               if( !interrupt ) interrupt = renderengine->interrupted;
+               if( !interrupt ) interrupt = renderengine->video->interrupt;
+               if( !interrupt ) interrupt = vconsole->interrupt;
        }