mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 07:14:56 +01:00
Fix assert() when using DnD to import MIDI files
When importing a multi-track MIDI files with identical track-names, Ardour would create the same file for each track. Effectively overwriting an existing file. The following MIDI file would create the same file twice in `interchange/`, once for each MTrk. ``` MFile 1 2 240 MTrk 0 Meta SeqName "Foo Bar" 0 TimeSig 4/4 24 8 0 Tempo 666667 0 Meta TrkEnd TrkEnd MTrk 0 Meta TrkName "Foo Bar" 0 On ch=10 n=36 v=95 ... ```
This commit is contained in:
parent
50bccb44d5
commit
b51621a1ae
3 changed files with 5 additions and 5 deletions
|
|
@ -432,7 +432,7 @@ Editor::drop_paths_part_two (const vector<string>& paths, timepos_t const & p, d
|
||||||
/* drop onto canvas background: create new tracks */
|
/* drop onto canvas background: create new tracks */
|
||||||
|
|
||||||
InstrumentSelector is; // instantiation builds instrument-list and sets default.
|
InstrumentSelector is; // instantiation builds instrument-list and sets default.
|
||||||
do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, SMFTrackName, SMFTempoIgnore, pos, is.selected_instrument(), false);
|
do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, SMFTrackNumber, SMFTempoIgnore, pos, is.selected_instrument(), false);
|
||||||
|
|
||||||
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
|
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
|
||||||
do_import (audio_paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack,
|
do_import (audio_paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack,
|
||||||
|
|
@ -450,7 +450,7 @@ Editor::drop_paths_part_two (const vector<string>& paths, timepos_t const & p, d
|
||||||
selection->set (tv);
|
selection->set (tv);
|
||||||
|
|
||||||
do_import (midi_paths, Editing::ImportSerializeFiles, ImportToTrack,
|
do_import (midi_paths, Editing::ImportSerializeFiles, ImportToTrack,
|
||||||
SrcBest, SMFTrackName, SMFTempoIgnore, pos);
|
SrcBest, SMFTrackNumber, SMFTempoIgnore, pos);
|
||||||
|
|
||||||
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
|
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
|
||||||
do_import (audio_paths, Editing::ImportSerializeFiles, Editing::ImportToTrack,
|
do_import (audio_paths, Editing::ImportSerializeFiles, Editing::ImportToTrack,
|
||||||
|
|
|
||||||
|
|
@ -280,7 +280,7 @@ EditorSources::drag_data_received (const RefPtr<Gdk::DragContext>& context,
|
||||||
|
|
||||||
if (UIConfiguration::instance ().get_only_copy_imported_files () || copy) {
|
if (UIConfiguration::instance ().get_only_copy_imported_files () || copy) {
|
||||||
_editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion,
|
_editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion,
|
||||||
SrcBest, SMFTrackName, SMFTempoIgnore, pos);
|
SrcBest, SMFTrackNumber, SMFTempoIgnore, pos);
|
||||||
} else {
|
} else {
|
||||||
_editor->do_embed (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, pos);
|
_editor->do_embed (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, pos);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -602,8 +602,8 @@ TriggerPage::drop_paths_part_two (std::vector<std::string> paths)
|
||||||
InstrumentSelector is; // instantiation builds instrument-list and sets default.
|
InstrumentSelector is; // instantiation builds instrument-list and sets default.
|
||||||
timepos_t pos (0);
|
timepos_t pos (0);
|
||||||
Editing::ImportDisposition disposition = Editing::ImportSerializeFiles; // or Editing::ImportDistinctFiles // TODO use drop modifier? config?
|
Editing::ImportDisposition disposition = Editing::ImportSerializeFiles; // or Editing::ImportDistinctFiles // TODO use drop modifier? config?
|
||||||
PublicEditor::instance().do_import (midi_paths, disposition, Editing::ImportAsTrigger, SrcBest, SMFTrackName, SMFTempoIgnore, pos, is.selected_instrument (), false);
|
PublicEditor::instance().do_import (midi_paths, disposition, Editing::ImportAsTrigger, SrcBest, SMFTrackNumber, SMFTempoIgnore, pos, is.selected_instrument (), false);
|
||||||
PublicEditor::instance().do_import (audio_paths, disposition, Editing::ImportAsTrigger, SrcBest, SMFTrackName, SMFTempoIgnore, pos);
|
PublicEditor::instance().do_import (audio_paths, disposition, Editing::ImportAsTrigger, SrcBest, SMFTrackNumber, SMFTempoIgnore, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue