X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fmute_master.h;h=d0e261e059255566dc2d9345dc0dab973fa46133;hb=a1c5d1be43007265ef1257889a3138b0fa75c2ac;hp=8a83352a5bbd04f682db376a545057139ec418d6;hpb=24d2b5ec9200bf46ccb42528560de4a02b7be516;p=ardour.git diff --git a/libs/ardour/ardour/mute_master.h b/libs/ardour/ardour/mute_master.h index 8a83352a5b..d0e261e059 100644 --- a/libs/ardour/ardour/mute_master.h +++ b/libs/ardour/ardour/mute_master.h @@ -20,20 +20,24 @@ #ifndef __ardour_mute_master_h__ #define __ardour_mute_master_h__ -#include "evoral/Parameter.hpp" +#include + #include "pbd/signals.h" #include "pbd/stateful.h" -#include + +#include "evoral/Parameter.hpp" #include "ardour/session_handle.h" +#include "ardour/types.h" namespace ARDOUR { class Session; +class Muteable; class LIBARDOUR_API MuteMaster : public SessionHandleRef, public PBD::Stateful { - public: +public: /** deliveries to mute when the channel is "muted" */ enum MutePoint { PreFader = 0x1, ///< mute all pre-fader sends @@ -44,12 +48,14 @@ class LIBARDOUR_API MuteMaster : public SessionHandleRef, public PBD::Stateful static const MutePoint AllPoints; - MuteMaster (Session& s, const std::string& name); + MuteMaster (Session& s, Muteable&, const std::string& name); ~MuteMaster() {} bool muted_by_self () const { return _muted_by_self && (_mute_point != MutePoint (0)); } bool muted_by_self_at (MutePoint mp) const { return _muted_by_self && (_mute_point & mp); } - bool muted_by_others_at (MutePoint mp) const; + bool muted_by_others_soloing_at (MutePoint mp) const; + bool muted_by_masters () const { return _muted_by_masters && (_mute_point != MutePoint (0)); } + bool muted_by_masters_at (MutePoint mp) const { return _muted_by_masters && (_mute_point & mp); } gain_t mute_gain_at (MutePoint) const; @@ -62,19 +68,24 @@ class LIBARDOUR_API MuteMaster : public SessionHandleRef, public PBD::Stateful void set_mute_points (MutePoint); MutePoint mute_points() const { return _mute_point; } - void set_soloed (bool); - void set_solo_ignore (bool yn) { _solo_ignore = yn; } + void set_soloed_by_self (bool yn) { _soloed_by_self = yn; } + void set_soloed_by_others (bool yn) { _soloed_by_others = yn; } + + void set_muted_by_masters (bool); PBD::Signal0 MutePointChanged; XMLNode& get_state(); int set_state(const XMLNode&, int version); - - private: - volatile MutePoint _mute_point; - volatile bool _muted_by_self; - volatile bool _soloed; - volatile bool _solo_ignore; + static const std::string xml_node_name; + +private: + Muteable* _muteable; + MutePoint _mute_point; + bool _muted_by_self; + bool _soloed_by_self; + bool _soloed_by_others; + bool _muted_by_masters; }; } // namespace ARDOUR