summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-12-06 19:00:57 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-12-06 19:00:57 +0000
commit4566992139ba5242cd4a0670f85c51367340d3ff (patch)
treeb766630c543540ff6ae6f093d15346dfcac35deb /libs/ardour/route.cc
parent79e8659a1b8ea341f45a0431772e56526a2c7c61 (diff)
miscellaneous stuff, SVN IS TEMPORARILY BROKEN. FIX WITHIN 18 HOURS
git-svn-id: svn://localhost/ardour2/trunk@1192 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r--libs/ardour/route.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 01b60527f8..38cd7ad37d 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -780,6 +780,21 @@ Route::set_mute (bool yn, void *src)
}
}
+uint32_t
+Route::count_sends ()
+{
+ uint32_t cnt = 0;
+ Glib::RWLock::ReaderLock lm (redirect_lock);
+
+ for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
+ if (boost::dynamic_pointer_cast<Send> (*i)) {
+ ++cnt;
+ }
+ }
+
+ return cnt;
+}
+
int
Route::add_redirect (boost::shared_ptr<Redirect> redirect, void *src, uint32_t* err_streams)
{
@@ -923,6 +938,10 @@ Route::clear_redirects (void *src)
{
Glib::RWLock::WriterLock lm (redirect_lock);
+ RedirectList::iterator i;
+ for (i = _redirects.begin(); i != _redirects.end(); ++i) {
+ (*i)->drop_references ();
+ }
_redirects.clear ();
}
@@ -1019,6 +1038,8 @@ Route::remove_redirect (boost::shared_ptr<Redirect> redirect, void *src, uint32_
reset_panner ();
}
+ redirect->drop_references ();
+
redirects_changed (src); /* EMIT SIGNAL */
return 0;
}