emit required signal
[ardour.git] / libs / ardour / plugin_insert.cc
index 7c9c71ccf01e47c619bc21438b8b09b31717625c..ce05d6c298fc536b5da25eb9d86ab9c0f198c0b5 100644 (file)
@@ -492,7 +492,11 @@ PluginInsert::create_automatable_parameters ()
                        if (Variant::type_is_numeric(desc.datatype)) {
                                list = boost::shared_ptr<AutomationList>(new AutomationList(param, desc));
                        }
-                       add_control (boost::shared_ptr<AutomationControl> (new PluginPropertyControl(this, param, desc, list)));
+                       boost::shared_ptr<AutomationControl> c (new PluginPropertyControl(this, param, desc, list));
+                       if (!Variant::type_is_numeric(desc.datatype)) {
+                               c->set_flags (Controllable::Flag ((int)c->flags() | Controllable::NotAutomatable));
+                       }
+                       add_control (c);
                }
        }
 
@@ -701,6 +705,18 @@ PluginInsert::bypassable_changed ()
        BypassableChanged ();
 }
 
+bool
+PluginInsert::write_immediate_event (size_t size, const uint8_t* buf)
+{
+       bool rv = true;
+       for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
+               if (!(*i)->write_immediate_event (size, buf)) {
+                       rv = false;
+               }
+       }
+       return rv;
+}
+
 void
 PluginInsert::preset_load_set_value (uint32_t p, float v)
 {
@@ -3078,7 +3094,7 @@ PluginInsert::end_touch (uint32_t param_id)
        boost::shared_ptr<AutomationControl> ac = automation_control (Evoral::Parameter (PluginAutomation, 0, param_id));
        if (ac) {
                // ToDo subtract _plugin_signal_latency  from audible_frame() when rolling, assert > 0
-               ac->stop_touch (true, session().audible_frame());
+               ac->stop_touch (session().audible_frame());
        }
 }