diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2016-11-30 19:45:56 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2016-12-06 14:06:18 +1000 |
commit | b7bee5c90398c3836b3ce747c18ba34e52f205d8 (patch) | |
tree | 51976fd1ff61aafc310f820371790bb9bb711aa1 | |
parent | a7d19f8fe58f8a343916ce2f768a822d7bc98e76 (diff) |
Fix Multi Duplicate for a Range Selections
As mentioned in the previous commit
-rw-r--r-- | libs/ardour/playlist.cc | 13 |
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; } } |