X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Frenderengine.C;h=6ad6629c00719f9bce155cff2a680e768ee3d34d;hb=d077044be445c058142c2b92b981c53898a2c112;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..6ad6629c 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; @@ -79,6 +76,7 @@ RenderEngine::RenderEngine(PlaybackEngine *playback_engine, 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 +246,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 +334,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 +504,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 +557,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(); +}