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
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;
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