change return type of AutomationControl::actually_set_value() from void to bool,...
[ardour.git] / libs / ardour / plugin_insert.cc
index c3dae8b71f184edd1c4ee838c0eac3d5a6b34e86..a8348c1df39b25d1b8888fee127e550b63d22e9d 100644 (file)
@@ -2617,6 +2617,15 @@ PluginInsert::update_id (PBD::ID id)
        }
 }
 
+void
+PluginInsert::set_owner (SessionObject* o)
+{
+       Processor::set_owner (o);
+       for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
+               (*i)->set_owner (o);
+       }
+}
+
 void
 PluginInsert::set_state_dir (const std::string& d)
 {
@@ -2758,7 +2767,7 @@ PluginInsert::PluginControl::PluginControl (PluginInsert*                     p,
 
 /** @param val `user' value */
 
-void
+bool
 PluginInsert::PluginControl::actually_set_value (double user_val, PBD::Controllable::GroupControlDisposition group_override)
 {
        /* FIXME: probably should be taking out some lock here.. */
@@ -2772,13 +2781,13 @@ PluginInsert::PluginControl::actually_set_value (double user_val, PBD::Controlla
                iasp->set_parameter (_list->parameter().id(), user_val);
        }
 
-       AutomationControl::actually_set_value (user_val, group_override);
+       return AutomationControl::actually_set_value (user_val, group_override);
 }
 
 void
 PluginInsert::PluginControl::catch_up_with_external_value (double user_val)
 {
-       AutomationControl::actually_set_value (user_val, Controllable::NoGroup);
+       (void) AutomationControl::actually_set_value (user_val, Controllable::NoGroup);
 }
 
 XMLNode&
@@ -2825,7 +2834,7 @@ PluginInsert::PluginPropertyControl::PluginPropertyControl (PluginInsert*
        }
 }
 
-void
+bool
 PluginInsert::PluginPropertyControl::actually_set_value (double user_val, Controllable::GroupControlDisposition gcd)
 {
        /* Old numeric set_value(), coerce to appropriate datatype if possible.
@@ -2834,7 +2843,7 @@ PluginInsert::PluginPropertyControl::actually_set_value (double user_val, Contro
        const Variant value(_desc.datatype, user_val);
        if (value.type() == Variant::NOTHING) {
                error << "set_value(double) called for non-numeric property" << endmsg;
-               return;
+               return false;
        }
 
        for (Plugins::iterator i = _plugin->_plugins.begin(); i != _plugin->_plugins.end(); ++i) {
@@ -2843,7 +2852,7 @@ PluginInsert::PluginPropertyControl::actually_set_value (double user_val, Contro
 
        _value = value;
 
-       AutomationControl::actually_set_value (user_val, gcd);
+       return AutomationControl::actually_set_value (user_val, gcd);
 }
 
 XMLNode&
@@ -2907,6 +2916,7 @@ void
 PluginInsert::add_plugin (boost::shared_ptr<Plugin> plugin)
 {
        plugin->set_insert_id (this->id());
+       plugin->set_owner (_owner);
 
        if (_plugins.empty()) {
                /* first (and probably only) plugin instance - connect to relevant signals */