summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-11-30 23:34:48 +0000
committerCarl Hetherington <carl@carlh.net>2009-11-30 23:34:48 +0000
commit4f445eab1105b15b6641b217d5c74113a8cec5fa (patch)
tree065a1eb5e79e4a78ca0cebbc3ebfd4fc15f23782 /libs/ardour
parentfddc11f556061d0ffa9a173a3652aa34c20bac3b (diff)
Remove internal sends to an aux bus when it is removed.
git-svn-id: svn://localhost/ardour2/branches/3.0@6228 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/session.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 93293de2b6..2af304161d 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -2382,6 +2382,18 @@ Session::remove_route (shared_ptr<Route> route)
route->input()->disconnect (0);
route->output()->disconnect (0);
+ /* if the route had internal sends sending to it, remove them */
+ if (route->internal_return()) {
+
+ boost::shared_ptr<RouteList> r = routes.reader ();
+ for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
+ boost::shared_ptr<Send> s = (*i)->internal_send_for (route);
+ if (s) {
+ (*i)->remove_processor (s);
+ }
+ }
+ }
+
update_latency_compensation (false, false);
set_dirty();