diff options
author | Carl Hetherington <carl@carlh.net> | 2009-08-26 02:19:36 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-08-26 02:19:36 +0000 |
commit | c6be9b688802198e04a07dc902c49d1d6b66340e (patch) | |
tree | c912543110517ddcbda171d8922a61f3e87d6aa7 /libs/ardour/playlist.cc | |
parent | 8934ff78678cafeb03c398e7add299f2bc1a730d (diff) |
Make stacked region coverage frames correctly respect regions being muted.
git-svn-id: svn://localhost/ardour2/branches/3.0@5595 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/playlist.cc')
-rw-r--r-- | libs/ardour/playlist.cc | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index f74eb1001f..94e6e421bd 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -1418,7 +1418,38 @@ Playlist::top_region_at (nframes_t frame) delete rlist; return region; -} +} + +boost::shared_ptr<Region> +Playlist::top_unmuted_region_at (nframes_t frame) + +{ + RegionLock rlock (this); + RegionList *rlist = find_regions_at (frame); + + for (RegionList::iterator i = rlist->begin(); i != rlist->end(); ) { + + RegionList::iterator tmp = i; + ++tmp; + + if ((*i)->muted()) { + rlist->erase (i); + } + + i = tmp; + } + + boost::shared_ptr<Region> region; + + if (rlist->size()) { + RegionSortByLayer cmp; + rlist->sort (cmp); + region = rlist->back(); + } + + delete rlist; + return region; +} Playlist::RegionList* Playlist::regions_to_read (nframes_t start, nframes_t end) |