LV2: Ignore connection optional ports

This commit is contained in:
Daniel Appelt 2024-06-14 09:57:33 +02:00 committed by Robin Gareus
parent 4b31a1078a
commit 5a1fc0ddc9
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04

View file

@ -186,6 +186,7 @@ public:
LilvNode* lv2_ControlPort;
LilvNode* lv2_InputPort;
LilvNode* lv2_OutputPort;
LilvNode* lv2_connectionOptional;
LilvNode* lv2_designation;
LilvNode* lv2_enumeration;
LilvNode* lv2_freewheeling;
@ -837,7 +838,7 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
lilv_nodes_free(min_size_v);
lilv_nodes_free(buffer_types);
lilv_nodes_free(atom_supports);
} else {
} else if (!lilv_port_has_property(_impl->plugin, port, _world.lv2_connectionOptional)) {
error << string_compose(
"LV2: \"%1\" port %2 has no known data type",
lilv_node_as_string(_impl->name), i) << endmsg;
@ -3504,16 +3505,17 @@ LV2World::LV2World()
ext_logarithmic = lilv_new_uri(world, LV2_PORT_PROPS__logarithmic);
ext_notOnGUI = lilv_new_uri(world, LV2_PORT_PROPS__notOnGUI);
ext_expensive = lilv_new_uri(world, LV2_PORT_PROPS__expensive);
ext_causesArtifacts= lilv_new_uri(world, LV2_PORT_PROPS__causesArtifacts);
ext_causesArtifacts = lilv_new_uri(world, LV2_PORT_PROPS__causesArtifacts);
ext_notAutomatic = lilv_new_uri(world, LV2_PORT_PROPS__notAutomatic);
ext_rangeSteps = lilv_new_uri(world, LV2_PORT_PROPS__rangeSteps);
ext_displayPriority= lilv_new_uri(world, LV2_PORT_PROPS__displayPriority);
ext_displayPriority = lilv_new_uri(world, LV2_PORT_PROPS__displayPriority);
groups_group = lilv_new_uri(world, LV2_PORT_GROUPS__group);
groups_element = lilv_new_uri(world, LV2_PORT_GROUPS__element);
lv2_AudioPort = lilv_new_uri(world, LILV_URI_AUDIO_PORT);
lv2_ControlPort = lilv_new_uri(world, LILV_URI_CONTROL_PORT);
lv2_InputPort = lilv_new_uri(world, LILV_URI_INPUT_PORT);
lv2_OutputPort = lilv_new_uri(world, LILV_URI_OUTPUT_PORT);
lv2_connectionOptional = lilv_new_uri(world, LV2_CORE__connectionOptional);
lv2_inPlaceBroken = lilv_new_uri(world, LV2_CORE__inPlaceBroken);
lv2_isSideChain = lilv_new_uri(world, LV2_CORE_PREFIX "isSideChain");
lv2_index = lilv_new_uri(world, LV2_CORE__index);
@ -3616,6 +3618,7 @@ LV2World::~LV2World()
lilv_node_free(lv2_integer);
lilv_node_free(lv2_isSideChain);
lilv_node_free(lv2_inPlaceBroken);
lilv_node_free(lv2_connectionOptional);
lilv_node_free(lv2_OutputPort);
lilv_node_free(lv2_InputPort);
lilv_node_free(lv2_ControlPort);
@ -3971,7 +3974,7 @@ LV2PluginInfo::discover (boost::function <void (std::string const&, PluginScanLo
count_ctrl_out++;
}
}
else if (!lilv_port_is_a (p, port, world.lv2_AudioPort)) {
else if (!lilv_port_is_a(p, port, world.lv2_AudioPort) && !lilv_port_has_property(p, port, world.lv2_connectionOptional)) {
err = 1;
LilvNode* name = lilv_port_get_name(p, port);
cb (uri, PluginScanLogEntry::Error, string_compose (_("Port %1 ('%2') has no known data type"), i, lilv_node_as_string (name)), false);