xlat default theme name, fix stop blunder
[goodguy/history.git] / cinelerra-5.1 / cinelerra / renderengine.C
index 970a91b0571f9afff27e1ca68c57f71b819db584..4e8bc7de26d189ca8fc36ebf8c3fd5969b2feee5 100644 (file)
@@ -66,16 +66,12 @@ RenderEngine::RenderEngine(PlaybackEngine *playback_engine,
 
        audio_cache = 0;
        video_cache = 0;
-       if(playback_engine && playback_engine->mwindow)
-               mwindow = playback_engine->mwindow;
-       else
-               mwindow = 0;
-       show_tc = 0;
-
+       mwindow = !playback_engine ? 0 : playback_engine->mwindow;
 
        input_lock = new Condition(1, "RenderEngine::input_lock");
        start_lock = new Condition(1, "RenderEngine::start_lock");
        output_lock = new Condition(1, "RenderEngine::output_lock");
+       render_active = new Condition(1,"RenderEngine::render_active");
        interrupt_lock = new Mutex("RenderEngine::interrupt_lock");
        first_frame_lock = new Condition(1, "RenderEngine::first_frame_lock");
 }
@@ -193,11 +189,11 @@ void RenderEngine::get_duty()
        do_video = 0;
 
 //printf("RenderEngine::get_duty %d\n", __LINE__);
-       if(!command->single_frame() &&
-               get_edl()->tracks->playable_audio_tracks() &&
-               get_edl()->session->audio_channels)
+       if( get_edl()->tracks->playable_audio_tracks() &&
+           get_edl()->session->audio_channels )
        {
-               do_audio = 1;
+               do_audio = !command->single_frame() ? 1 : 0;
+               if( command->audio_toggle ) do_audio = !do_audio;
        }
 
 //printf("RenderEngine::get_duty %d\n", __LINE__);
@@ -503,6 +499,7 @@ void RenderEngine::get_module_levels(ArrayList<double> *module_levels, int64_t p
 
 void RenderEngine::run()
 {
+       render_active->lock("RenderEngine::run");
        start_render_threads();
        start_lock->unlock();
        interrupt_lock->unlock();
@@ -555,7 +552,13 @@ void RenderEngine::run()
 
        input_lock->unlock();
        interrupt_lock->unlock();
+       render_active->unlock();
 }
 
+void RenderEngine::wait_done()
+{
+       render_active->lock("RenderEngine::wait_done");
+       render_active->unlock();
+}