diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-01 20:40:51 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-01 20:40:51 +0000 |
commit | 3b54a75aa9c03edb32d3960c5aacba640e1901e0 (patch) | |
tree | b03e8a4ce943d38349afea7b0af89e9953d67c43 /gtk2_ardour/editor_audio_import.cc | |
parent | 44b07cb30c549e28be936d071c39346850a3d328 (diff) |
i/o button naming patch and imported file BWF timecode retention patch from nickm, both reworked for 3.0
git-svn-id: svn://localhost/ardour2/branches/3.0@5711 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_audio_import.cc')
-rw-r--r-- | gtk2_ardour/editor_audio_import.cc | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index a71f3dcc98..8459ccba6e 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -695,8 +695,11 @@ Editor::add_sources (vector<Glib::ustring> paths, SourceList& sources, nframes64 ustring region_name; uint32_t input_chan = 0; uint32_t output_chan = 0; + bool use_timestamp; + + use_timestamp = (pos == -1); - if (pos == -1) { // "use timestamp" + if (use_timestamp) { if (sources[0]->natural_position() != 0) { pos = sources[0]->natural_position(); } else { @@ -714,8 +717,15 @@ Editor::add_sources (vector<Glib::ustring> paths, SourceList& sources, nframes64 region_name = region_name_from_path (paths.front(), (sources.size() > 1), false); - regions.push_back (RegionFactory::create (sources, 0, sources[0]->length(pos), region_name, 0, - Region::Flag (Region::DefaultFlags|Region::WholeFile|Region::External))); + boost::shared_ptr<Region> r = RegionFactory::create (sources, 0, sources[0]->length(pos), region_name, 0, + Region::Flag (Region::DefaultFlags|Region::WholeFile|Region::External)); + + if (use_timestamp && boost::dynamic_pointer_cast<AudioRegion>(r)) { + boost::dynamic_pointer_cast<AudioRegion>(r)->special_set_position(sources[0]->natural_position()); + } + + regions.push_back (r); + } else if (target_regions == -1 || target_regions > 1) { @@ -732,9 +742,14 @@ Editor::add_sources (vector<Glib::ustring> paths, SourceList& sources, nframes64 region_name = region_name_from_path ((*x)->path(), false, false, sources.size(), n); - regions.push_back (RegionFactory::create (just_one, 0, (*x)->length(pos), region_name, 0, - Region::Flag (Region::DefaultFlags|Region::WholeFile|Region::External))); - + boost::shared_ptr<Region> r = RegionFactory::create (just_one, 0, (*x)->length(pos), region_name, 0, + Region::Flag (Region::DefaultFlags|Region::WholeFile|Region::External)); + + if (use_timestamp && boost::dynamic_pointer_cast<AudioRegion>(r)) { + boost::dynamic_pointer_cast<AudioRegion>(r)->special_set_position((*x)->natural_position()); + } + + regions.push_back (r); } } |