summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/slavable.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-06-22 21:06:12 +0200
committerRobin Gareus <robin@gareus.org>2017-06-22 22:04:10 +0200
commit9334c99b355c7e326f5659794c88f61805aa16d0 (patch)
treec171795e0953acfe735170f1feed44d40773009c /libs/ardour/ardour/slavable.h
parentfaa52a33498b7d655c6e54176bd257d88eec3ea5 (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.h22
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