summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-08-25 19:28:33 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-08-25 19:28:33 +0000
commit88583b4abd1c606f2916dfabbc72e11a85fa20db (patch)
tree399a7f7843ac62875ab931b332956086fac55d63 /libs
parent2ba08927bd1e1be97876b267c46e75e074f21e18 (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.h3
-rw-r--r--libs/ardour/playlist.cc19
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;
}