X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindowedit.C;h=5e4b797be1f96ead14415d179af9467b3f04116b;hp=d0a1259484fe7aa4cf088d8690452f962fed1a65;hb=26d01a213db5d4f6ee57224cc9a9ea37bd74318c;hpb=48a6854a1ca58aa291ffc6fe3a48807492dfbef7 diff --git a/cinelerra-5.1/cinelerra/mwindowedit.C b/cinelerra-5.1/cinelerra/mwindowedit.C index d0a12594..5e4b797b 100644 --- a/cinelerra-5.1/cinelerra/mwindowedit.C +++ b/cinelerra-5.1/cinelerra/mwindowedit.C @@ -85,7 +85,8 @@ void MWindow::add_audio_track_entry(int above, Track *dst) { undo_before(); - add_audio_track(above, dst); + Track *track = add_audio_track(above, dst); + track->master = 1; save_backup(); undo_after(_("add track"), LOAD_ALL); @@ -95,10 +96,11 @@ void MWindow::add_audio_track_entry(int above, Track *dst) cwindow->refresh_frame(CHANGE_EDL); } -void MWindow::add_video_track_entry(Track *dst) +void MWindow::add_video_track_entry(int above, Track *dst) { undo_before(); - add_video_track(1, dst); + Track *track = add_video_track(above, dst); + track->master = 1; undo_after(_("add track"), LOAD_ALL); restart_brender(); @@ -109,10 +111,11 @@ void MWindow::add_video_track_entry(Track *dst) save_backup(); } -void MWindow::add_subttl_track_entry(Track *dst) +void MWindow::add_subttl_track_entry(int above, Track *dst) { undo_before(); - add_subttl_track(1, dst); + Track *track = add_subttl_track(above, dst); + track->master = 1; undo_after(_("add track"), LOAD_ALL); restart_brender(); @@ -124,28 +127,28 @@ void MWindow::add_subttl_track_entry(Track *dst) } -int MWindow::add_audio_track(int above, Track *dst) +Track *MWindow::add_audio_track(int above, Track *dst) { - edl->tracks->add_audio_track(above, dst); + Track *track = edl->tracks->add_audio_track(above, dst); edl->tracks->update_y_pixels(theme); save_backup(); - return 0; + return track; } -int MWindow::add_video_track(int above, Track *dst) +Track *MWindow::add_video_track(int above, Track *dst) { - edl->tracks->add_video_track(above, dst); + Track *track = edl->tracks->add_video_track(above, dst); edl->tracks->update_y_pixels(theme); save_backup(); - return 0; + return track; } -int MWindow::add_subttl_track(int above, Track *dst) +Track *MWindow::add_subttl_track(int above, Track *dst) { - edl->tracks->add_subttl_track(above, dst); + Track *track = edl->tracks->add_subttl_track(above, dst); edl->tracks->update_y_pixels(theme); save_backup(); - return 0; + return track; } void MWindow::asset_to_all() @@ -774,17 +777,17 @@ void MWindow::insert_effects_canvas(Track *dest_track, double start, double leng for( Track *track=dest_track; track; track=track->next ) { if( gang && track->master && !first_track ) break; if( track->data_type != data_type ) continue; - if( !track->armed ) continue; + if( !track->is_armed() ) continue; int module = edl->tracks->number_of(track); for( int i=0; idrag_pluginservers->total; ++i ) { PluginServer *plugin = session->drag_pluginservers->values[i]; - int shared = gang && plugin->multichannel ? 1 : 0; + int shared = gang; // && plugin->multichannel ? 1 : 0; int plugin_type = !first_track && shared ? PLUGIN_SHAREDPLUGIN : PLUGIN_STANDALONE; SharedLocation *shared_location = !first_track ? &shared_locations[i] : &shared_locations.append(); insert_effect(plugin->title, shared_location, track, - pluginset, start, length, plugin_type); + pluginset, start, length, plugin_type); if( first_track && shared ) { shared_location->module = module; shared_location->plugin = pluginset ? @@ -829,38 +832,34 @@ void MWindow::insert_effect(char *title, SharedLocation *shared_location, SharedLocation shared_location_local; shared_location_local.copy_from(shared_location); int first_track = 1; + double start_pos = edl->local_session->get_selectionstart(1); + double end_pos = edl->local_session->get_selectionend(1); for( ; current; current=NEXT ) { - if( current->data_type == data_type && current->is_armed() ) { - double start = edl->local_session->get_selectionstart(1); - double end = edl->local_session->get_selectionend(1); - double length = end - start; - if( start >= end ) { - start = 0; - length = current->get_length(); - } - insert_effect(title, &shared_location_local, + if( current->data_type != data_type ) continue; + if( !current->is_armed() ) continue; + double start = start_pos, end = end_pos; + if( plugin_type == PLUGIN_STANDALONE && start >= end ) { + start = 0; + end = current->get_length(); + } + double length = end - start; + insert_effect(title, &shared_location_local, current, 0, start, length, plugin_type); - - if( first_track ) { - if( plugin_type == PLUGIN_STANDALONE && single_standalone ) { - plugin_type = PLUGIN_SHAREDPLUGIN; - shared_location_local.module = edl->tracks->number_of(current); - shared_location_local.plugin = current->plugin_set.total - 1; - } - first_track = 0; + if( first_track ) { + if( plugin_type == PLUGIN_STANDALONE && single_standalone ) { + plugin_type = PLUGIN_SHAREDPLUGIN; + shared_location_local.module = edl->tracks->number_of(current); + shared_location_local.plugin = current->plugin_set.total - 1; + start_pos = start; end_pos = end; } + first_track = 0; } } } - void MWindow::insert_effect(char *title, - SharedLocation *shared_location, - Track *track, - PluginSet *plugin_set, - double start, - double length, - int plugin_type) + SharedLocation *shared_location, Track *track, PluginSet *plugin_set, + double start, double length, int plugin_type) { KeyFrame *default_keyframe = 0; PluginServer *server = 0; @@ -873,9 +872,8 @@ void MWindow::insert_effect(char *title, server->save_data(default_keyframe); } // Insert plugin object - track->insert_effect(title, shared_location, - default_keyframe, plugin_set, - start, length, plugin_type); + track->insert_effect(title, shared_location, default_keyframe, + plugin_set, start, length, plugin_type); track->optimize(); if( plugin_type == PLUGIN_STANDALONE ) {