diff options
author | Robin Gareus <robin@gareus.org> | 2017-06-22 21:06:12 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-06-22 22:04:10 +0200 |
commit | 9334c99b355c7e326f5659794c88f61805aa16d0 (patch) | |
tree | c171795e0953acfe735170f1feed44d40773009c /libs/ardour/ardour/slavable.h | |
parent | faa52a33498b7d655c6e54176bd257d88eec3ea5 (diff) |
Update Slavable API
Do not use AutomationType to identify parameters, use complete
Evoral::Parameter and Automatable.
For "batch connections", a Slavables needs to implement an API to return
the relevant controls.
This is only a first step towards a more generic Master/Slave framework.
Diffstat (limited to 'libs/ardour/ardour/slavable.h')
-rw-r--r-- | libs/ardour/ardour/slavable.h | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libs/ardour/ardour/slavable.h b/libs/ardour/ardour/slavable.h index 15d3e41991..6e584b2128 100644 --- a/libs/ardour/ardour/slavable.h +++ b/libs/ardour/ardour/slavable.h @@ -30,6 +30,7 @@ #include "evoral/Parameter.hpp" +#include "ardour/types.h" #include "ardour/libardour_visibility.h" class XMLNode; @@ -39,33 +40,39 @@ namespace ARDOUR { class VCA; class VCAManager; class AutomationControl; +class SlavableAutomationControl; class LIBARDOUR_API Slavable { - public: +public: Slavable (); virtual ~Slavable() {} XMLNode& get_state () const; int set_state (XMLNode const&, int); - void assign (boost::shared_ptr<VCA>, bool loading); + void assign (boost::shared_ptr<VCA>); void unassign (boost::shared_ptr<VCA>); PBD::Signal2<void,boost::shared_ptr<VCA>,bool> AssignmentChange; - virtual boost::shared_ptr<AutomationControl> automation_control (const Evoral::Parameter& id) = 0; + virtual boost::shared_ptr<AutomationControl> automation_control (const Evoral::Parameter&) = 0; static std::string xml_node_name; /* signal sent VCAManager once assignment is possible */ static PBD::Signal1<void,VCAManager*> Assign; - protected: - virtual int assign_controls (boost::shared_ptr<VCA>, bool loading); - virtual int unassign_controls (boost::shared_ptr<VCA>); +protected: + virtual SlavableControlList slavables () const = 0; + +private: + bool assign_controls (boost::shared_ptr<VCA>); + void unassign_controls (boost::shared_ptr<VCA>); + + bool assign_control (boost::shared_ptr<VCA>, boost::shared_ptr<SlavableAutomationControl>); + void unassign_control (boost::shared_ptr<VCA>, boost::shared_ptr<SlavableAutomationControl>); - private: mutable Glib::Threads::RWLock master_lock; std::set<uint32_t> _masters; PBD::ScopedConnection assign_connection; @@ -73,7 +80,6 @@ class LIBARDOUR_API Slavable int do_assign (VCAManager* s); void weak_unassign (boost::weak_ptr<VCA>); - }; } // namespace ARDOUR |