diff options
Diffstat (limited to 'src/server/events/SetMetadata.cpp')
-rw-r--r-- | src/server/events/SetMetadata.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/events/SetMetadata.cpp b/src/server/events/SetMetadata.cpp index 23109a2f..b01e17cb 100644 --- a/src/server/events/SetMetadata.cpp +++ b/src/server/events/SetMetadata.cpp @@ -268,6 +268,8 @@ SetMetadata::execute(ProcessContext& context) return; } + const Ingen::Shared::LV2URIMap& uris = *_engine.world()->uris().get(); + if (_create_event) { _create_event->execute(context); } @@ -281,6 +283,7 @@ SetMetadata::execute(ProcessContext& context) std::vector<SpecialType>::const_iterator t = _types.begin(); for (Properties::const_iterator p = _properties.begin(); p != _properties.end(); ++p, ++t) { + const Raul::Atom& key = p->first; const Raul::Atom& value = p->second; switch (*t) { case ENABLE_BROADCAST: @@ -317,7 +320,7 @@ SetMetadata::execute(ProcessContext& context) break; case CONTROL_BINDING: if (port) { - _engine.control_bindings()->port_binding_changed(context, port); + _engine.control_bindings()->port_binding_changed(context, port, value); } else if (node) { if (node->plugin_impl()->type() == Plugin::Internal) { node->learn(); @@ -325,6 +328,13 @@ SetMetadata::execute(ProcessContext& context) } break; case NONE: + if (port) { + if (key == uris.lv2_minimum) { + port->set_minimum(value); + } else if (key == uris.lv2_maximum) { + port->set_maximum(value); + } + } break; } } |