Record::~Record()
{
mwindow->gui->record = 0;
- stop(); join();
+ stop();
delete blink_status;
delete cutads_status;
stop_skimming();
if( channel )
video_stream = channel->video_stream;
}
- stop();
+ stop(0);
edl->Garbage::remove_user();
if( mwindow->gui->remote_control->deactivate() )
// 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,
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;
window_lock->unlock();
}
else {
- stop(); join();
init_lock->reset();
Thread::start();
}
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;