diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-12-06 19:00:57 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-12-06 19:00:57 +0000 |
commit | 4566992139ba5242cd4a0670f85c51367340d3ff (patch) | |
tree | b766630c543540ff6ae6f093d15346dfcac35deb /libs/ardour/route.cc | |
parent | 79e8659a1b8ea341f45a0431772e56526a2c7c61 (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.cc | 21 |
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; } |