summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/playlist.h3
-rw-r--r--libs/ardour/audio_diskstream.cc4
-rw-r--r--libs/ardour/audio_playlist_source.cc4
-rw-r--r--libs/ardour/luabindings.cc2
-rw-r--r--libs/ardour/playlist.cc9
5 files changed, 15 insertions, 7 deletions
diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h
index 5eec755a38..cc968e1833 100644
--- a/libs/ardour/ardour/playlist.h
+++ b/libs/ardour/ardour/playlist.h
@@ -164,7 +164,8 @@ public:
boost::shared_ptr<Playlist> copy (std::list<AudioRange>&, bool result_is_hidden = true);
int paste (boost::shared_ptr<Playlist>, framepos_t position, float times);
- const RegionListProperty& region_list () const { return regions; }
+ const RegionListProperty& region_list_property () const { return regions; }
+ boost::shared_ptr<RegionList> region_list();
boost::shared_ptr<RegionList> regions_at (framepos_t frame);
uint32_t count_regions_at (framepos_t) const;
diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc
index 64d91b1ea8..cab7f5faf8 100644
--- a/libs/ardour/audio_diskstream.cc
+++ b/libs/ardour/audio_diskstream.cc
@@ -359,7 +359,7 @@ AudioDiskstream::use_destructive_playlist ()
boost::shared_ptr<Region> rp;
{
- const RegionList& rl (_playlist->region_list().rlist());
+ const RegionList& rl (_playlist->region_list_property().rlist());
if (rl.size() > 0) {
assert((rl.size() == 1));
rp = rl.front();
@@ -2435,7 +2435,7 @@ AudioDiskstream::can_become_destructive (bool& requires_bounce) const
boost::shared_ptr<Region> first;
{
- const RegionList& rl (_playlist->region_list().rlist());
+ const RegionList& rl (_playlist->region_list_property().rlist());
assert((rl.size() == 1));
first = rl.front();
diff --git a/libs/ardour/audio_playlist_source.cc b/libs/ardour/audio_playlist_source.cc
index 7ac487815c..98df5c1835 100644
--- a/libs/ardour/audio_playlist_source.cc
+++ b/libs/ardour/audio_playlist_source.cc
@@ -188,7 +188,7 @@ AudioPlaylistSource::n_channels () const
return 1;
}
- boost::shared_ptr<Region> r = _playlist->region_list().front ();
+ boost::shared_ptr<Region> r = _playlist->region_list_property().front ();
boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion> (r);
return ar->audio_source()->n_channels ();
@@ -203,7 +203,7 @@ AudioPlaylistSource::sample_rate () const
_session.frame_rate ();
}
- boost::shared_ptr<Region> r = _playlist->region_list().front ();
+ boost::shared_ptr<Region> r = _playlist->region_list_property().front ();
boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion> (r);
return ar->audio_source()->sample_rate ();
diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc
index 3c7dd670e0..f9a9b7bc11 100644
--- a/libs/ardour/luabindings.cc
+++ b/libs/ardour/luabindings.cc
@@ -572,7 +572,7 @@ LuaBindings::common (lua_State* L)
.addFunction ("data_type", &Playlist::data_type)
.addFunction ("n_regions", &Playlist::n_regions)
//.addFunction ("get_extent", &Playlist::get_extent) // pair<framepos_t, framepos_t>
- //.addFunction ("region_list", &Playlist::region_list) // RegionListProperty&
+ .addFunction ("region_list", &Playlist::region_list)
.addFunction ("add_region", &Playlist::add_region)
.addFunction ("remove_region", &Playlist::remove_region)
.addFunction ("regions_at", &Playlist::regions_at)
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc
index 2e96dee063..eaee1c4326 100644
--- a/libs/ardour/playlist.cc
+++ b/libs/ardour/playlist.cc
@@ -1774,6 +1774,13 @@ Playlist::region_bounds_changed (const PropertyChange& what_changed, boost::shar
**********************************************************************/
boost::shared_ptr<RegionList>
+Playlist::region_list() {
+ RegionReadLock rlock (this);
+ boost::shared_ptr<RegionList> rlist (new RegionList (regions.rlist ()));
+ return rlist;
+}
+
+boost::shared_ptr<RegionList>
Playlist::regions_at (framepos_t frame)
{
RegionReadLock rlock (this);
@@ -3132,7 +3139,7 @@ Playlist::uncombine (boost::shared_ptr<Region> target)
// (2) get all the original regions
- const RegionList& rl (pl->region_list().rlist());
+ const RegionList& rl (pl->region_list_property().rlist());
RegionFactory::CompoundAssociations& cassocs (RegionFactory::compound_associations());
frameoffset_t move_offset = 0;