X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Frenderengine.C;h=bb8f43a865c86f4dc92a3afe4b0d4a6aa5a64ce9;hb=3ac8199743f244669cc87ceef9c3cd23710552f3;hp=abca0715be47135761d7ca78d67fc041cadf3e2b;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/renderengine.C b/cinelerra-5.1/cinelerra/renderengine.C index abca0715..bb8f43a8 100644 --- a/cinelerra-5.1/cinelerra/renderengine.C +++ b/cinelerra-5.1/cinelerra/renderengine.C @@ -24,7 +24,6 @@ #include "asset.h" #include "audiodevice.h" #include "bcsignals.h" -#include "channeldb.h" #include "condition.h" #include "edl.h" #include "edlsession.h" @@ -46,13 +45,11 @@ RenderEngine::RenderEngine(PlaybackEngine *playback_engine, Preferences *preferences, Canvas *output, - ChannelDB *channeldb, int is_nested) : Thread(1, 0, 0) { this->playback_engine = playback_engine; this->output = output; - this->channeldb = channeldb; this->is_nested = is_nested; audio = 0; video = 0; @@ -69,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"); } @@ -248,26 +241,6 @@ int RenderEngine::brender_available(int position, int direction) return 0; } -Channel* RenderEngine::get_current_channel() -{ - if(channeldb) - { - switch(config->vconfig->driver) - { - case PLAYBACK_BUZ: - if(config->vconfig->buz_out_channel >= 0 && - config->vconfig->buz_out_channel < channeldb->size()) - { - return channeldb->get(config->vconfig->buz_out_channel); - } - break; - case VIDEO4LINUX2JPEG: - case VIDEO4LINUX2MPEG: - break; - } - } - return 0; -} CICache* RenderEngine::get_acache() { @@ -356,8 +329,6 @@ int RenderEngine::open_output() get_output_h(), output, command->single_frame()); - Channel *channel = get_current_channel(); - if(channel) video->set_channel(channel); video->set_quality(80); video->set_cpus(preferences->processors); } @@ -528,6 +499,7 @@ void RenderEngine::get_module_levels(ArrayList *module_levels, int64_t p void RenderEngine::run() { + render_active->lock("RenderEngine::run"); start_render_threads(); start_lock->unlock(); interrupt_lock->unlock(); @@ -580,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(); +}