summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2016-11-30 19:45:56 +1000
committerTim Mayberry <mojofunk@gmail.com>2016-12-06 14:06:18 +1000
commitb7bee5c90398c3836b3ce747c18ba34e52f205d8 (patch)
tree51976fd1ff61aafc310f820371790bb9bb711aa1
parenta7d19f8fe58f8a343916ce2f768a822d7bc98e76 (diff)
Fix Multi Duplicate for a Range Selections
As mentioned in the previous commit
-rw-r--r--libs/ardour/playlist.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc
index fcf24795db..c520f10b99 100644
--- a/libs/ardour/playlist.cc
+++ b/libs/ardour/playlist.cc
@@ -1327,7 +1327,7 @@ Playlist::duplicate_range (AudioRange& range, float times)
}
void
-Playlist::duplicate_ranges (std::list<AudioRange>& ranges, float /* times */)
+Playlist::duplicate_ranges (std::list<AudioRange>& ranges, float times)
{
if (ranges.empty()) {
return;
@@ -1345,9 +1345,14 @@ Playlist::duplicate_ranges (std::list<AudioRange>& ranges, float /* times */)
framecnt_t offset = max_pos - min_pos;
- for (list<AudioRange>::iterator i = ranges.begin(); i != ranges.end(); ++i) {
- boost::shared_ptr<Playlist> pl = copy ((*i).start, (*i).length(), true);
- paste (pl, (*i).start + offset, 1.0f, 0); // times ??
+ int count = 1;
+ int itimes = (int) floor (times);
+ while (itimes--) {
+ for (list<AudioRange>::iterator i = ranges.begin (); i != ranges.end (); ++i) {
+ boost::shared_ptr<Playlist> pl = copy ((*i).start, (*i).length (), true);
+ paste (pl, (*i).start + (offset * count), 1.0f, 0);
+ }
+ ++count;
}
}