X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrack.C;h=6bebe819d2f61d5fa762d776fe294c672337cd86;hb=6050493632cb3681227b7ec8c12decd449dcf66f;hp=3c092b73f7188ec8ea2080cdceb15a7e88f7de6f;hpb=834732af87bfd7f1d4035109f31e48db12b415fa;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/track.C b/cinelerra-5.1/cinelerra/track.C index 3c092b73..6bebe819 100644 --- a/cinelerra-5.1/cinelerra/track.C +++ b/cinelerra-5.1/cinelerra/track.C @@ -194,12 +194,9 @@ void Track::copy_from(Track *track) { copy_settings(track); edits->copy_from(track->edits); - for(int i = 0; i < this->plugin_set.total; i++) - delete this->plugin_set.values[i]; this->plugin_set.remove_all_objects(); - for(int i = 0; i < track->plugin_set.total; i++) - { + for( int i=0; iplugin_set.total; ++i ) { PluginSet *new_plugin_set = plugin_set.append(new PluginSet(edl, this)); new_plugin_set->copy_from(track->plugin_set.values[i]); } @@ -1062,10 +1059,8 @@ void Track::set_automation_mode(double selectionstart, -int Track::copy(double start, - double end, - FileXML *file, - const char *output_path) +int Track::copy(int copy_flags, double start, double end, + FileXML *file, const char *output_path) { // Use a copy of the selection in converted units // So copy_automation doesn't reconvert. @@ -1105,16 +1100,18 @@ int Track::copy(double start, // file->append_tag(); // file->append_newline(); - edits->copy(start_unit, end_unit, file, output_path); - - AutoConf auto_conf; - auto_conf.set_all(1); - automation->copy(start_unit, end_unit, file, 0, 0); + if( (copy_flags & COPY_EDITS) ) + edits->copy(start_unit, end_unit, file, output_path); + if( (copy_flags & COPY_AUTOS) ) { + AutoConf auto_conf; + auto_conf.set_all(1); + automation->copy(start_unit, end_unit, file, 0, 0); + } - for(int i = 0; i < plugin_set.total; i++) - { - plugin_set.values[i]->copy(start_unit, end_unit, file); + if( (copy_flags & COPY_PLUGINS) ) { + for( int i=0; icopy(start_unit, end_unit, file); } copy_derived(start_unit, end_unit, file); @@ -1186,9 +1183,10 @@ int Track::clear(int64_t start, int64_t end, if( edit_autos ) automation->clear(start, end, 0, 1); if( edit_plugins ) { + int edit_keyframes = edit_plugins < 0 ? 1 : edit_autos; for(int i = 0; i < plugin_set.total; i++) { if(!trim_edits || trim_edits == (Edits*)plugin_set.values[i]) - plugin_set.values[i]->clear(start, end, edit_autos); + plugin_set.values[i]->clear(start, end, edit_keyframes); } } if( edit_edits )