summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2012-01-04 13:56:09 +0000
committerCarl Hetherington <carl@carlh.net>2012-01-04 13:56:09 +0000
commitb9a9d8d0471c28e80e350d6e49cde965f87b986b (patch)
tree2ee216de7cc2b400e9dd2aabaaa5d451e1f33141 /libs/ardour
parent365a8f7f14bdc653bb012b10be8938a8eaaa69ce (diff)
Use a few shared_ptrs to make things slightly neater.
git-svn-id: svn://localhost/ardour2/branches/3.0@11156 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/playlist.h8
-rw-r--r--libs/ardour/audio_playlist.cc11
-rw-r--r--libs/ardour/playlist.cc81
3 files changed, 46 insertions, 54 deletions
diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h
index 626df720bd..022fdb3ccb 100644
--- a/libs/ardour/ardour/playlist.h
+++ b/libs/ardour/ardour/playlist.h
@@ -151,11 +151,11 @@ public:
const RegionListProperty& region_list () const { return regions; }
- RegionList* regions_at (framepos_t frame);
+ boost::shared_ptr<RegionList> regions_at (framepos_t frame);
uint32_t count_regions_at (framepos_t) const;
uint32_t count_joined_regions () const;
- RegionList* regions_touched (framepos_t start, framepos_t end);
- RegionList* regions_to_read (framepos_t start, framepos_t end);
+ boost::shared_ptr<RegionList> regions_touched (framepos_t start, framepos_t end);
+ boost::shared_ptr<RegionList> regions_to_read (framepos_t start, framepos_t end);
uint32_t region_use_count (boost::shared_ptr<Region>) const;
boost::shared_ptr<Region> find_region (const PBD::ID&) const;
boost::shared_ptr<Region> top_region_at (framepos_t frame);
@@ -340,7 +340,6 @@ 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);
void copy_regions (RegionList&) const;
void partition_internal (framepos_t start, framepos_t end, bool cutting, RegionList& thawlist);
@@ -382,6 +381,7 @@ public:
private:
void setup_layering_indices (RegionList const &) const;
+ boost::shared_ptr<RegionList> find_regions_at (framepos_t);
};
} /* namespace ARDOUR */
diff --git a/libs/ardour/audio_playlist.cc b/libs/ardour/audio_playlist.cc
index fca042e2c5..56f2c4fe83 100644
--- a/libs/ardour/audio_playlist.cc
+++ b/libs/ardour/audio_playlist.cc
@@ -289,10 +289,9 @@ AudioPlaylist::read (Sample *buf, Sample *mixdown_buffer, float *gain_buffer, fr
framepos_t const end = start + cnt - 1;
- RegionList* rlist = regions_to_read (start, start+cnt);
+ boost::shared_ptr<RegionList> rlist = regions_to_read (start, start+cnt);
if (rlist->empty()) {
- delete rlist;
return cnt;
}
@@ -353,7 +352,6 @@ AudioPlaylist::read (Sample *buf, Sample *mixdown_buffer, float *gain_buffer, fr
}
}
- delete rlist;
return ret;
}
@@ -492,7 +490,7 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh)
boost::shared_ptr<AudioRegion> top;
boost::shared_ptr<AudioRegion> bottom;
boost::shared_ptr<Crossfade> xfade;
- RegionList* touched_regions = 0;
+ boost::shared_ptr<RegionList> touched_regions;
if (in_set_state || in_partition) {
return;
@@ -543,8 +541,7 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh)
OverlapType c = top->coverage (bottom->position(), bottom->last_frame());
- delete touched_regions;
- touched_regions = 0;
+ touched_regions.reset ();
try {
framecnt_t xfade_length;
@@ -657,8 +654,6 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh)
}
}
-
- delete touched_regions;
}
void
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc
index bcc203694e..bc11b863eb 100644
--- a/libs/ardour/playlist.cc
+++ b/libs/ardour/playlist.cc
@@ -1634,13 +1634,12 @@ Playlist::flush_notifications (bool from_undo)
FINDING THINGS
**********************************************************************/
- Playlist::RegionList *
- Playlist::regions_at (framepos_t frame)
-
- {
- RegionLock rlock (this);
- return find_regions_at (frame);
- }
+boost::shared_ptr<Playlist::RegionList>
+Playlist::regions_at (framepos_t frame)
+{
+ RegionLock rlock (this);
+ return find_regions_at (frame);
+}
uint32_t
Playlist::count_regions_at (framepos_t frame) const
@@ -1662,7 +1661,7 @@ Playlist::flush_notifications (bool from_undo)
{
RegionLock rlock (this);
- RegionList *rlist = find_regions_at (frame);
+ boost::shared_ptr<RegionList> rlist = find_regions_at (frame);
boost::shared_ptr<Region> region;
if (rlist->size()) {
@@ -1671,7 +1670,6 @@ Playlist::flush_notifications (bool from_undo)
region = rlist->back();
}
- delete rlist;
return region;
}
@@ -1680,7 +1678,7 @@ Playlist::flush_notifications (bool from_undo)
{
RegionLock rlock (this);
- RegionList *rlist = find_regions_at (frame);
+ boost::shared_ptr<RegionList> rlist = find_regions_at (frame);
for (RegionList::iterator i = rlist->begin(); i != rlist->end(); ) {
@@ -1702,13 +1700,12 @@ Playlist::flush_notifications (bool from_undo)
region = rlist->back();
}
- delete rlist;
return region;
}
- Playlist::RegionList*
- Playlist::regions_to_read (framepos_t start, framepos_t end)
- {
+boost::shared_ptr<Playlist::RegionList>
+Playlist::regions_to_read (framepos_t start, framepos_t end)
+{
/* Caller must hold lock */
RegionList covering;
@@ -1772,7 +1769,7 @@ Playlist::flush_notifications (bool from_undo)
}
}
- RegionList* rlist = new RegionList;
+ boost::shared_ptr<RegionList> rlist (new RegionList);
/* find all the regions that cover each position .... */
@@ -1841,36 +1838,36 @@ Playlist::flush_notifications (bool from_undo)
return rlist;
}
- Playlist::RegionList *
- Playlist::find_regions_at (framepos_t frame)
- {
- /* Caller must hold lock */
-
- RegionList *rlist = new RegionList;
-
- for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
- if ((*i)->covers (frame)) {
- rlist->push_back (*i);
- }
- }
-
- return rlist;
- }
-
- Playlist::RegionList *
- Playlist::regions_touched (framepos_t start, framepos_t end)
- {
- RegionLock rlock (this);
- RegionList *rlist = new RegionList;
+boost::shared_ptr<Playlist::RegionList>
+Playlist::find_regions_at (framepos_t frame)
+{
+ /* Caller must hold lock */
+
+ boost::shared_ptr<RegionList> rlist (new RegionList);
- for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
- if ((*i)->coverage (start, end) != OverlapNone) {
- rlist->push_back (*i);
- }
- }
+ for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
+ if ((*i)->covers (frame)) {
+ rlist->push_back (*i);
+ }
+ }
+
+ return rlist;
+}
+boost::shared_ptr<Playlist::RegionList>
+Playlist::regions_touched (framepos_t start, framepos_t end)
+{
+ RegionLock rlock (this);
+ boost::shared_ptr<RegionList> rlist (new RegionList);
+
+ for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
+ if ((*i)->coverage (start, end) != OverlapNone) {
+ rlist->push_back (*i);
+ }
+ }
+
return rlist;
- }
+}
framepos_t
Playlist::find_next_transient (framepos_t from, int dir)