MuteMaster should (a) use a Muteable's own ::muted_by_others_soloing() (b) not try...
[ardour.git] / libs / ardour / mute_master.cc
index 29a2fe914337fb66f6ace750a04dc5de1387dfcc..ed77942f6c4ae03070930dc3b93e0630670ed05b 100644 (file)
@@ -36,13 +36,13 @@ const string MuteMaster::xml_node_name (X_("MuteMaster"));
 const MuteMaster::MutePoint MuteMaster::AllPoints = MuteMaster::MutePoint(
        PreFader|PostFader|Listen|Main);
 
-MuteMaster::MuteMaster (Session& s, const std::string&)
+MuteMaster::MuteMaster (Session& s, Muteable& m, const std::string&)
        : SessionHandleRef (s)
+       , _muteable (&m)
        , _mute_point (MutePoint (0))
         , _muted_by_self (false)
         , _soloed_by_self (false)
         , _soloed_by_others (false)
-        , _solo_ignore (false)
        , _muted_by_masters (0)
 {
 
@@ -166,10 +166,7 @@ MuteMaster::get_state()
 bool
 MuteMaster::muted_by_others_soloing_at (MutePoint mp) const
 {
-       /* note: this is currently called with the assumption that the owner is
-          not soloed. it does not test for this condition.
-       */
-       return (!_solo_ignore && _session.soloing()) && (_mute_point & mp);
+       return _muteable->muted_by_others_soloing() && (_mute_point & mp);
 }
 
 void