summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/mute_master.h24
-rw-r--r--libs/ardour/ardour/route.h7
2 files changed, 23 insertions, 8 deletions
diff --git a/libs/ardour/ardour/mute_master.h b/libs/ardour/ardour/mute_master.h
index 925d679674..610ca20dff 100644
--- a/libs/ardour/ardour/mute_master.h
+++ b/libs/ardour/ardour/mute_master.h
@@ -44,28 +44,38 @@ class MuteMaster : public PBD::Stateful
MuteMaster (Session& s, const std::string& name);
~MuteMaster() {}
- bool muted_pre_fader() const { return _mute_point & PreFader; }
- bool muted_post_fader() const { return _mute_point & PostFader; }
- bool muted_listen() const { return _mute_point & Listen; }
- bool muted_main () const { return _mute_point & Main; }
+ bool self_muted() const { return _self_muted && (_mute_point != MutePoint (0)); }
+ bool muted_by_others() const { return _muted_by_others && (_mute_point != MutePoint (0)); }
+ bool muted() const { return (_self_muted || (_muted_by_others > 0)) && (_mute_point != MutePoint (0)); }
+ bool muted_at (MutePoint mp) const { return (_self_muted || (_muted_by_others > 0)) && (_mute_point & mp); }
- bool muted_at (MutePoint mp) const { return _mute_point & mp; }
- bool muted() const { return _mute_point != MutePoint (0); }
+ bool muted_pre_fader() const { return muted_at (PreFader); }
+ bool muted_post_fader() const { return muted_at (PostFader); }
+ bool muted_listen() const { return muted_at (Listen); }
+ bool muted_main () const { return muted_at (Main); }
gain_t mute_gain_at (MutePoint) const;
+ void set_self_muted (bool yn) { _self_muted = yn; }
+ void mod_muted_by_others (int delta);
+
void clear_mute ();
void mute_at (MutePoint);
void unmute_at (MutePoint);
+ void set_mute_points (const std::string& mute_point);
+ void set_mute_points (MutePoint);
+ MutePoint mute_points() const { return _mute_point; }
+
PBD::Signal0<void> MutePointChanged;
XMLNode& get_state();
int set_state(const XMLNode&, int version);
- int set_state(std::string mute_point);
private:
MutePoint _mute_point;
+ bool _self_muted;
+ uint32_t _muted_by_others;
};
} // namespace ARDOUR
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index 6068103896..bdb041c7dd 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -124,8 +124,13 @@ class Route : public SessionObject, public AutomatableControls, public RouteGrou
void set_mute_points (MuteMaster::MutePoint);
MuteMaster::MutePoint mute_points() const { return _mute_points; }
- void set_mute (bool yn, void* src);
+
bool muted () const;
+ bool self_muted () const;
+ bool muted_by_others () const;
+
+ void set_mute (bool yn, void* src);
+ void mod_muted_by_others (int delta);
/* controls use set_solo() to modify this route's solo state
*/