summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_audio_import.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-09-24 20:00:48 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-09-24 20:00:48 +0000
commitb8a20bdf320368c9c340b4ec10815a34d78f255f (patch)
tree912d276325a004b81be2957e856b4b9299e6e3d6 /gtk2_ardour/editor_audio_import.cc
parent9ea281bdea94e31961d714546c972d2d7ea7516e (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.cc38
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();