Optimize automation-event process splitting
[ardour.git] / libs / ardour / lv2_plugin.cc
index 6f8dad939689e4728dcb470eb7e37089492d34e3..79bef11cdde146bb9170f406d56800eafbbb5342 100644 (file)
@@ -1992,6 +1992,16 @@ LV2Plugin::load_supported_properties(PropertyDescriptors& descs)
        lilv_nodes_free(properties);
 }
 
+Variant
+LV2Plugin::get_property_value (uint32_t prop_id) const
+{
+       std::map<uint32_t, Variant>::const_iterator it;
+       if ((it = _property_values.find (prop_id)) == _property_values.end()) {
+               return Variant();
+       }
+       return it->second;
+}
+
 void
 LV2Plugin::announce_property_values()
 {
@@ -2568,7 +2578,7 @@ write_position(LV2_Atom_Forge*     forge,
 int
 LV2Plugin::connect_and_run(BufferSet& bufs,
                samplepos_t start, samplepos_t end, double speed,
-               ChanMapping in_map, ChanMapping out_map,
+               ChanMapping const& in_map, ChanMapping const& out_map,
                pframes_t nframes, samplecnt_t offset)
 {
        DEBUG_TRACE(DEBUG::LV2, string_compose("%1 run %2 offset %3\n", name(), nframes, offset));
@@ -2944,6 +2954,7 @@ LV2Plugin::connect_and_run(BufferSet& bufs,
                                                                // Emit PropertyChanged signal for UI
                                                                // TODO: This should emit the control's Changed signal
                                                                PropertyChanged(prop_id, Variant(Variant::PATH, path));
+                                                               _property_values[prop_id] = Variant(Variant::PATH, path);
                                                        } else {
                                                                std::cerr << "warning: patch:Set for unknown property" << std::endl;
                                                        }