provide mechanism for "drop all slaves" for VCA master
This commit is contained in:
@@ -67,8 +67,10 @@ class LIBARDOUR_API Slavable
|
||||
mutable Glib::Threads::RWLock master_lock;
|
||||
std::set<uint32_t> _masters;
|
||||
PBD::ScopedConnection assign_connection;
|
||||
PBD::ScopedConnectionList unassign_connections;
|
||||
|
||||
int do_assign (VCAManager* s);
|
||||
|
||||
};
|
||||
|
||||
} // namespace ARDOUR
|
||||
|
||||
@@ -60,6 +60,8 @@ class LIBARDOUR_API VCA : public Stripable,
|
||||
XMLNode& get_state();
|
||||
int set_state (XMLNode const&, int version);
|
||||
|
||||
PBD::Signal0<void> Drop; /* signal to slaves to drop control by this VCA */
|
||||
|
||||
/* Slavable API */
|
||||
|
||||
bool slaved_to (boost::shared_ptr<VCA>) const;
|
||||
|
||||
@@ -115,10 +115,13 @@ Slavable::do_assign (VCAManager* manager)
|
||||
void
|
||||
Slavable::assign (boost::shared_ptr<VCA> v)
|
||||
{
|
||||
assert (v);
|
||||
Glib::Threads::RWLock::WriterLock lm (master_lock);
|
||||
if (assign_controls (v) == 0) {
|
||||
_masters.insert (v->number());
|
||||
}
|
||||
|
||||
v->Drop.connect_same_thread (unassign_connections, boost::bind (&Slavable::unassign, this, v));
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user