diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-25 19:28:33 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-25 19:28:33 +0000 |
commit | 88583b4abd1c606f2916dfabbc72e11a85fa20db (patch) | |
tree | 399a7f7843ac62875ab931b332956086fac55d63 /libs | |
parent | 2ba08927bd1e1be97876b267c46e75e074f21e18 (diff) |
major chunk of the region layering editor from 2.X, fwd-ported to 3.0
git-svn-id: svn://localhost/ardour2/branches/3.0@7689 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/playlist.h | 3 | ||||
-rw-r--r-- | libs/ardour/playlist.cc | 19 |
2 files changed, 19 insertions, 3 deletions
diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index 624f0a3da1..6473211126 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -144,6 +144,7 @@ public: const RegionListProperty& region_list () const { return regions; } RegionList* regions_at (framepos_t frame); + uint32_t count_regions_at (framepos_t); RegionList* regions_touched (framepos_t start, framepos_t end); RegionList* regions_to_read (framepos_t start, framepos_t end); boost::shared_ptr<Region> find_region (const PBD::ID&) const; @@ -326,7 +327,7 @@ public: bool add_region_internal (boost::shared_ptr<Region>, framepos_t position); int remove_region_internal (boost::shared_ptr<Region>); - RegionList *find_regions_at (framepos_t frame); + RegionList *find_regions_at (framepos_t); void copy_regions (RegionList&) const; void partition_internal (framepos_t start, framepos_t end, bool cutting, RegionList& thawlist); diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 93cfbab1fc..9c980ff735 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -1665,6 +1665,21 @@ Playlist::regions_at (framepos_t frame) return find_regions_at (frame); } +uint32_t +Playlist::count_regions_at (framepos_t frame) +{ + RegionLock rlock (this); + uint32_t cnt = 0; + + for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { + if ((*i)->covers (frame)) { + cnt++; + } + } + + return cnt; +} + boost::shared_ptr<Region> Playlist::top_region_at (framepos_t frame) @@ -2463,10 +2478,10 @@ Playlist::relayer () void Playlist::raise_region (boost::shared_ptr<Region> region) { - uint32_t rsz = regions.size(); + uint32_t top = regions.size() - 1; layer_t target = region->layer() + 1U; - if (target >= rsz) { + if (target >= top) { /* its already at the effective top */ return; } |