VCA::~VCA ()
{
DEBUG_TRACE (DEBUG::Destruction, string_compose ("delete VCA %1\n", number()));
+ {
+ Glib::Threads::Mutex::Lock lm (_control_lock);
+ for (Controls::const_iterator li = _controls.begin(); li != _controls.end(); ++li) {
+ boost::dynamic_pointer_cast<AutomationControl>(li->second)->drop_references ();
+ }
+ }
{
Glib::Threads::Mutex::Lock lm (number_lock);
if (_number == next_number - 1) {
}
} else if ((*i)->name() == Slavable::xml_node_name) {
Slavable::set_state (**i, version);
+ } else if ((*i)->name() == Automatable::xml_node_name) {
+ set_automation_xml_state (**i, Evoral::Parameter(NullAutomation));
}
}
return _gain_control->slaved_to (vca->gain_control());
}
+
+SlavableControlList
+VCA::slavables () const
+{
+ SlavableControlList rv;
+ rv.push_back (_gain_control);
+ rv.push_back (_mute_control);
+ rv.push_back (_solo_control);
+ return rv;
+}