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");
}
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__);
void RenderEngine::run()
{
+ render_active->lock("RenderEngine::run");
start_render_threads();
start_lock->unlock();
interrupt_lock->unlock();
input_lock->unlock();
interrupt_lock->unlock();
+ render_active->unlock();
}
+void RenderEngine::wait_done()
+{
+ render_active->lock("RenderEngine::wait_done");
+ render_active->unlock();
+}