forward port commit 7608 for a3
git-svn-id: svn://localhost/ardour2/branches/3.0@7609 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
59af63cde9
commit
eee61a9f9b
@ -327,6 +327,7 @@ Editor::do_import (vector<ustring> paths, ImportDisposition chns, ImportMode mod
|
|||||||
boost::shared_ptr<Track> track;
|
boost::shared_ptr<Track> track;
|
||||||
vector<ustring> to_import;
|
vector<ustring> to_import;
|
||||||
int nth = 0;
|
int nth = 0;
|
||||||
|
bool use_timestamp = (pos == -1);
|
||||||
|
|
||||||
current_interthread_info = &import_status;
|
current_interthread_info = &import_status;
|
||||||
import_status.current = 1;
|
import_status.current = 1;
|
||||||
@ -378,6 +379,12 @@ Editor::do_import (vector<ustring> paths, ImportDisposition chns, ImportMode mod
|
|||||||
/* NOTREACHED*/
|
/* NOTREACHED*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* have to reset this for every file we handle */
|
||||||
|
|
||||||
|
if (use_timestamp) {
|
||||||
|
pos = -1;
|
||||||
|
}
|
||||||
|
|
||||||
switch (chns) {
|
switch (chns) {
|
||||||
case Editing::ImportDistinctFiles:
|
case Editing::ImportDistinctFiles:
|
||||||
|
|
||||||
@ -718,14 +725,6 @@ Editor::add_sources (vector<Glib::ustring> paths, SourceList& sources, nframes64
|
|||||||
|
|
||||||
use_timestamp = (pos == -1);
|
use_timestamp = (pos == -1);
|
||||||
|
|
||||||
if (use_timestamp) {
|
|
||||||
if (sources[0]->natural_position() != 0) {
|
|
||||||
pos = sources[0]->natural_position();
|
|
||||||
} else {
|
|
||||||
pos = _session->current_start_frame();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// kludge (for MIDI we're abusing "channel" for "track" here)
|
// kludge (for MIDI we're abusing "channel" for "track" here)
|
||||||
if (SMFSource::safe_midi_file_extension (paths.front())) {
|
if (SMFSource::safe_midi_file_extension (paths.front())) {
|
||||||
target_regions = -1;
|
target_regions = -1;
|
||||||
@ -806,17 +805,56 @@ Editor::add_sources (vector<Glib::ustring> paths, SourceList& sources, nframes64
|
|||||||
}
|
}
|
||||||
|
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
framepos_t rlen = 0;
|
||||||
|
|
||||||
for (vector<boost::shared_ptr<Region> >::iterator r = regions.begin(); r != regions.end(); ++r, ++n) {
|
for (vector<boost::shared_ptr<Region> >::iterator r = regions.begin(); r != regions.end(); ++r, ++n) {
|
||||||
|
|
||||||
|
boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion> (*r);
|
||||||
|
|
||||||
|
if (use_timestamp && ar) {
|
||||||
|
|
||||||
|
cerr << "Using timestamp to place region " << (*r)->name() << endl;
|
||||||
|
|
||||||
|
/* get timestamp for this region */
|
||||||
|
|
||||||
|
const boost::shared_ptr<Source> s (ar->sources().front());
|
||||||
|
const boost::shared_ptr<AudioSource> as = boost::dynamic_pointer_cast<AudioSource> (s);
|
||||||
|
|
||||||
|
assert (as);
|
||||||
|
|
||||||
|
if (as->natural_position() != 0) {
|
||||||
|
pos = as->natural_position();
|
||||||
|
cerr << "\tgot " << pos << " from source TC info\n";
|
||||||
|
} else if (target_tracks == 1) {
|
||||||
|
/* hmm, no timestamp available, put it after the previous region
|
||||||
|
*/
|
||||||
|
if (n == 0) {
|
||||||
|
pos = get_preferred_edit_position ();
|
||||||
|
cerr << "\tno timestamp, first file, use edit pos = " << pos << endl;
|
||||||
|
} else {
|
||||||
|
pos += rlen;
|
||||||
|
cerr << "\tpacked-sequence-shuffle to " << pos << endl;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pos = get_preferred_edit_position ();
|
||||||
|
cerr << "\tmultitracks, using edit position = " << pos << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
finish_bringing_in_material (*r, input_chan, output_chan, pos, mode, track);
|
finish_bringing_in_material (*r, input_chan, output_chan, pos, mode, track);
|
||||||
|
|
||||||
|
rlen = (*r)->length();
|
||||||
|
|
||||||
if (target_tracks != 1) {
|
if (target_tracks != 1) {
|
||||||
track.reset ();
|
track.reset ();
|
||||||
} else {
|
} else {
|
||||||
|
if (!use_timestamp || !ar) {
|
||||||
|
/* line each one up right after the other */
|
||||||
pos += (*r)->length();
|
pos += (*r)->length();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* setup peak file building in another thread */
|
/* setup peak file building in another thread */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user