summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/slavable.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour/slavable.h')
-rw-r--r--libs/ardour/ardour/slavable.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/libs/ardour/ardour/slavable.h b/libs/ardour/ardour/slavable.h
index ae53caef38..b0ef33e1b4 100644
--- a/libs/ardour/ardour/slavable.h
+++ b/libs/ardour/ardour/slavable.h
@@ -26,12 +26,14 @@
#include <boost/shared_ptr.hpp>
+#include <pbd/signals.h>
+
class XMLNode;
namespace ARDOUR {
class VCA;
-class Session;
+class VCAManager;
class Slavable
{
@@ -39,14 +41,17 @@ class Slavable
Slavable ();
virtual ~Slavable() {}
- XMLNode& state () const;
- int assign (Session& s, XMLNode const&);
+ XMLNode& get_state () const;
+ int set_state (XMLNode const&, int);
void assign (boost::shared_ptr<VCA>);
void unassign (boost::shared_ptr<VCA>);
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>) = 0;
virtual int unassign_controls (boost::shared_ptr<VCA>) = 0;
@@ -54,6 +59,9 @@ class Slavable
private:
mutable Glib::Threads::RWLock master_lock;
std::set<uint32_t> _masters;
+ PBD::ScopedConnection assign_connection;
+
+ int do_assign (VCAManager* s);
};
} // namespace ARDOUR