asset menu size fixups, new picons+prefs, more timecode del, stretch scrollbars,...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / renderengine.C
index abca0715be47135761d7ca78d67fc041cadf3e2b..bb8f43a865c86f4dc92a3afe4b0d4a6aa5a64ce9 100644 (file)
@@ -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"
 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<double> *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();
+}