#include <boost/shared_ptr.hpp>
+#include "ardour/slavable_automation_control.h"
+
+#include "ardour/mute_master.h"
#include "ardour/libardour_visibility.h"
namespace ARDOUR {
class LIBARDOUR_API MuteControl : public SlavableAutomationControl
{
- public:
+public:
MuteControl (Session& session, std::string const& name, Muteable&);
double get_value () const;
+ double get_save_value() const { return muted_by_self(); }
/* Export additional API so that objects that only get access
* to a Controllable/AutomationControl can do more fine-grained
*/
bool muted () const;
+ bool muted_by_self () const;
+ bool muted_by_masters () const;
+ bool muted_by_self_or_masters () const {
+ return muted_by_self() || muted_by_masters ();
+ }
bool muted_by_others_soloing () const;
- bool muted_by_others () const;
void set_mute_points (MuteMaster::MutePoint);
MuteMaster::MutePoint mute_points () const;
- protected:
+ void automation_run (samplepos_t start, pframes_t nframes);
+
+protected:
+ bool handle_master_change (boost::shared_ptr<AutomationControl>);
void actually_set_value (double, PBD::Controllable::GroupControlDisposition group_override);
- private:
+ void pre_remove_master (boost::shared_ptr<AutomationControl>);
+ void post_add_master (boost::shared_ptr<AutomationControl>);
+
+private:
Muteable& _muteable;
};