summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-06-28 16:05:35 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-06-28 16:05:35 -0400
commitb2be7cb6bd797f40d998a80d61cc88a75632b193 (patch)
tree1ad2b8c28917aeef620e555e303088d8a534cfb7 /libs
parent54d5f36311d041ce3d5fa3e6ed14fde30bcb70b7 (diff)
remove debug output and add a few suggestive comments
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/playlist.cc8
-rw-r--r--libs/ardour/region.cc16
-rw-r--r--libs/ardour/session_playlists.cc8
3 files changed, 19 insertions, 13 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc
index 7267ec8cdf..58405e4755 100644
--- a/libs/ardour/playlist.cc
+++ b/libs/ardour/playlist.cc
@@ -2675,7 +2675,13 @@ Playlist::uses_source (boost::shared_ptr<const Source> src, bool shallow) const
RegionReadLock rlock (const_cast<Playlist*> (this));
for (set<boost::shared_ptr<Region> >::const_iterator r = all_regions.begin(); r != all_regions.end(); ++r) {
- if ((*r)->uses_source (src, true)) {
+ /* Note: passing the second argument as false can cause at best
+ incredibly deep and time-consuming recursion, and at worst
+ cycles if the user has managed to create cycles of reference
+ between compound regions. We generally only this during
+ cleanup, and @param shallow is passed as true.
+ */
+ if ((*r)->uses_source (src, shallow)) {
return true;
}
}
diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc
index 20cab959e7..ba18cbc62d 100644
--- a/libs/ardour/region.cc
+++ b/libs/ardour/region.cc
@@ -1531,15 +1531,15 @@ Region::deep_sources (std::set<boost::shared_ptr<Source> > & sources) const
if (ps) {
if (sources.find (ps) == sources.end()) {
+ /* (Playlist)Source not currently in
+ accumulating set, so recurse.
+ */
ps->playlist()->deep_sources (sources);
- cerr << ps->name() << " new source\n";
- } else {
- cerr << ps->name() << " already in source list\n";
}
}
+ /* add this source */
sources.insert (*i);
- cerr << "Added src " << (*i)->name() << endl;
}
for (SourceList::const_iterator i = _master_sources.begin(); i != _master_sources.end(); ++i) {
@@ -1548,15 +1548,15 @@ Region::deep_sources (std::set<boost::shared_ptr<Source> > & sources) const
if (ps) {
if (sources.find (ps) == sources.end()) {
+ /* (Playlist)Source not currently in
+ accumulating set, so recurse.
+ */
ps->playlist()->deep_sources (sources);
- cerr << ps->name() << " new source2\n";
- } else {
- cerr << ps->name() << " already in source list2\n";
}
}
+ /* add this source */
sources.insert (*i);
- cerr << "Added master src " << (*i)->name() << endl;
}
}
diff --git a/libs/ardour/session_playlists.cc b/libs/ardour/session_playlists.cc
index c2e0461546..368b043ef7 100644
--- a/libs/ardour/session_playlists.cc
+++ b/libs/ardour/session_playlists.cc
@@ -244,7 +244,6 @@ SessionPlaylists::destroy_region (boost::shared_ptr<Region> r)
}
}
-
void
SessionPlaylists::find_equivalent_playlist_regions (boost::shared_ptr<Region> region, vector<boost::shared_ptr<Region> >& result)
{
@@ -260,7 +259,10 @@ SessionPlaylists::source_use_count (boost::shared_ptr<const Source> src) const
{
uint32_t count = 0;
- cerr << "\t\tcheck " << playlists.size() << " playlists\n";
+ /* XXXX this can go wildly wrong in the presence of circular references
+ * between compound regions.
+ */
+
for (List::const_iterator p = playlists.begin(); p != playlists.end(); ++p) {
if ((*p)->uses_source (src)) {
++count;
@@ -268,7 +270,6 @@ SessionPlaylists::source_use_count (boost::shared_ptr<const Source> src) const
}
}
- cerr << "\t\tcheck " << playlists.size() << " unused playlists\n";
for (List::const_iterator p = unused_playlists.begin(); p != unused_playlists.end(); ++p) {
if ((*p)->uses_source (src)) {
++count;
@@ -518,4 +519,3 @@ SessionPlaylists::foreach (boost::function<void(boost::shared_ptr<const Playlist
}
}
}
-