diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-09-24 20:00:48 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-09-24 20:00:48 +0000 |
commit | b8a20bdf320368c9c340b4ec10815a34d78f255f (patch) | |
tree | 912d276325a004b81be2957e856b4b9299e6e3d6 /gtk2_ardour/editor_audio_import.cc | |
parent | 9ea281bdea94e31961d714546c972d2d7ea7516e (diff) |
fix crash during import when selected tracks include busses
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2478 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_audio_import.cc')
-rw-r--r-- | gtk2_ardour/editor_audio_import.cc | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 863c162c43..0b674ad3ab 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -73,6 +73,7 @@ void Editor::external_audio_dialog () { vector<Glib::ustring> paths; + uint32_t track_cnt; if (session == 0) { MessageDialog msg (0, _("You can't import or embed an audiofile until you have a session loaded.")); @@ -80,10 +81,22 @@ Editor::external_audio_dialog () return; } + track_cnt = 0; + + for (TrackSelection::iterator x = selection->tracks.begin(); x != selection->tracks.end(); ++x) { + AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*>(*x); + + if (!atv) { + continue; + } else if (atv->is_audio_track()) { + track_cnt++; + } + } + if (sfbrowser == 0) { - sfbrowser = new SoundFileOmega (*this, _("Add existing audio"), session, selection->tracks.size()); + sfbrowser = new SoundFileOmega (*this, _("Add existing audio"), session, track_cnt); } else { - sfbrowser->reset (selection->tracks.size()); + sfbrowser->reset (track_cnt); } sfbrowser->show_all (); @@ -151,7 +164,12 @@ Editor::get_nth_selected_audio_track (int nth) const TrackSelection::iterator x; for (x = selection->tracks.begin(); nth > 0 && x != selection->tracks.end(); ++x) { - if (dynamic_cast<AudioTimeAxisView*>(*x)) { + + atv = dynamic_cast<AudioTimeAxisView*>(*x); + + if (!atv) { + continue; + } else if (atv->is_audio_track()) { --nth; } } @@ -162,7 +180,7 @@ Editor::get_nth_selected_audio_track (int nth) const atv = dynamic_cast<AudioTimeAxisView*>(*x); } - if (!atv) { + if (!atv || !atv->is_audio_track()) { return boost::shared_ptr<AudioTrack>(); } @@ -649,17 +667,11 @@ Editor::finish_bringing_in_audio (boost::shared_ptr<AudioRegion> region, uint32_ { if (!existing_track) { - if (selection->tracks.empty()) { - return -1; - } - - AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*>(selection->tracks.front()); - - if (!atv) { + existing_track = get_nth_selected_audio_track (0); + + if (!existing_track) { return -1; } - - existing_track = atv->audio_track(); } boost::shared_ptr<Playlist> playlist = existing_track->diskstream()->playlist(); |