summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r--libs/ardour/route.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 009adce9c8..38bed70dfa 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -130,6 +130,7 @@ Route::init ()
_pending_declick = true;
_remote_control_id = 0;
_in_configure_processors = false;
+ _mute_points = MuteMaster::AllPoints;
_route_group = 0;
@@ -584,6 +585,18 @@ Route::solo_isolated () const
}
void
+Route::set_mute_points (MuteMaster::MutePoint mp)
+{
+ _mute_points = mp;
+ mute_points_changed (); /* EMIT SIGNAL */
+
+ if (_mute_master->muted()) {
+ _mute_master->mute_at (_mute_points);
+ mute_changed (this); /* EMIT SIGNAL */
+ }
+}
+
+void
Route::set_mute (bool yn, void *src)
{
if (_route_group && src != _route_group && _route_group->active_property (RouteGroup::Mute)) {
@@ -592,8 +605,13 @@ Route::set_mute (bool yn, void *src)
}
if (muted() != yn) {
- _mute_master->mute (yn);
- mute_changed (src);
+ if (yn) {
+ _mute_master->mute_at (_mute_points);
+ } else {
+ _mute_master->clear_mute ();
+ }
+
+ mute_changed (src); /* EMIT SIGNAL */
}
}