X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Frecord.C;h=4cd0ae447824cf5dbd83393cd31685e49ad2c14e;hb=e9a3c57c8d3bb4d79e76a4c3942f86a66d3c267e;hp=1c9f6ecd1376e80e6b14c54effa3f427ea982ce9;hpb=21c2e6b36d6a96c2f662a89459d607b5a387f4eb;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/record.C b/cinelerra-5.1/cinelerra/record.C index 1c9f6ecd..4cd0ae44 100644 --- a/cinelerra-5.1/cinelerra/record.C +++ b/cinelerra-5.1/cinelerra/record.C @@ -163,7 +163,7 @@ Record::Record(MWindow *mwindow, RecordMenuItem *menu_item) Record::~Record() { mwindow->gui->record = 0; - stop(); join(); + stop(); delete blink_status; delete cutads_status; stop_skimming(); @@ -369,7 +369,7 @@ void Record::run() if( channel ) video_stream = channel->video_stream; } - stop(); + stop(0); edl->Garbage::remove_user(); if( mwindow->gui->remote_control->deactivate() ) @@ -402,8 +402,9 @@ void Record::run() // For pasting, clear the active region if(load_mode == LOADMODE_PASTE) mwindow->clear(0); - - mwindow->paste_edls(&new_edls, load_mode, 0, -1, + int loadmode = load_mode == LOADMODE_RESOURCESONLY ? + LOADMODE_ASSETSONLY : load_mode; + mwindow->paste_edls(&new_edls, loadmode, 0, -1, SESSION->labels_follow_edits, SESSION->plugins_follow_edits, SESSION->autos_follow_edits, @@ -433,9 +434,12 @@ void Record::run() default_asset->Garbage::remove_user(); } -void Record::stop() +void Record::stop(int wait) { stop_operation(); + if( wait && running() ) + record_gui->set_done(1); + join(); window_lock->lock("Record::stop"); delete record_thread; record_thread = 0; delete record_monitor; record_monitor = 0; @@ -588,7 +592,6 @@ void Record::start() window_lock->unlock(); } else { - stop(); join(); init_lock->reset(); Thread::start(); } @@ -1092,8 +1095,8 @@ void Record::start_writing_file() if( !writing_file ) { written_frames = 0; written_samples = 0; - do_video = File::supports_video(default_asset->format); - do_audio = File::supports_audio(default_asset->format); + do_video = File::renders_video(default_asset); + do_audio = File::renders_audio(default_asset); if( single_frame ) do_audio = 0; if( !do_video && single_frame ) single_frame = 0;