summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-04-08 23:44:18 +0200
committerRobin Gareus <robin@gareus.org>2017-04-08 23:44:18 +0200
commit65ff43d0a73bb0b08b9942932ece97edd79bc714 (patch)
tree02646a77a62a672528ba22d3e29896cfa626c8e7 /libs/ardour/session.cc
parentf9db9bf5fd8d5936be01802aa7f2825b4e386777 (diff)
Emit Session::MuteChanged() if a mutes route is removed.
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 12fb6521fa..243a46b0ee 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -3717,12 +3717,13 @@ Session::add_internal_send (boost::shared_ptr<Route> dest, boost::shared_ptr<Pro
void
Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove)
{
+ bool mute_changed = false;
+
{ // RCU Writer scope
PBD::Unwinder<bool> uw_flag (_route_deletion_in_progress, true);
RCUWriter<RouteList> writer (routes);
boost::shared_ptr<RouteList> rs = writer.get_copy ();
-
for (RouteList::iterator iter = routes_to_remove->begin(); iter != routes_to_remove->end(); ++iter) {
if (*iter == _master_out) {
@@ -3734,6 +3735,10 @@ Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove)
(*iter)->solo_control()->set_value (0.0, Controllable::NoGroup);
}
+ if ((*iter)->mute_control()->muted ()) {
+ mute_changed = true;
+ }
+
rs->remove (*iter);
/* deleting the master out seems like a dumb
@@ -3785,6 +3790,10 @@ Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove)
} // end of RCU Writer scope
+ if (mute_changed) {
+ MuteChanged (); /* EMIT SIGNAL */
+ }
+
update_route_solo_state ();
update_latency_compensation ();
set_dirty();