From 98e991c93974916e3a3b4dcc8f228dd33fae5c36 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 14 Aug 2015 19:24:40 +0200 Subject: [PATCH] relax LV2 buffersize restrictions check only required features, not optional ones. --- libs/ardour/lv2_plugin.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index a3283e8d36..4ef93ae375 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -430,16 +430,20 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate) lilv_node_free(_impl->author); throw failed_constructor(); } - if (lilv_plugin_has_feature(plugin, _world.bufz_powerOf2BlockLength) || - lilv_plugin_has_feature(plugin, _world.bufz_fixedBlockLength) + + LilvNodes *required_features = lilv_plugin_get_required_features (plugin); + if (lilv_nodes_contains (required_features, _world.bufz_powerOf2BlockLength) || + lilv_nodes_contains (required_features, _world.bufz_fixedBlockLength) ) { error << string_compose( _("LV2: \"%1\" buffer-size requirements cannot be satisfied."), lilv_node_as_string(_impl->name)) << endmsg; lilv_node_free(_impl->name); lilv_node_free(_impl->author); + lilv_nodes_free(required_features); throw failed_constructor(); } + lilv_nodes_free(required_features); #ifdef HAVE_LILV_0_16_0 // Load default state @@ -2520,15 +2524,18 @@ LV2PluginInfo::discover() continue; } - if (lilv_plugin_has_feature(p, _world.bufz_powerOf2BlockLength) || - lilv_plugin_has_feature(p, world.bufz_fixedBlockLength) + LilvNodes *required_features = lilv_plugin_get_required_features (p); + if (lilv_nodes_contains (required_features, world.bufz_powerOf2BlockLength) || + lilv_nodes_contains (required_features, world.bufz_fixedBlockLength) ) { warning << string_compose( _("Ignoring LV2 plugin \"%1\" because its buffer-size requirements cannot be satisfied."), lilv_node_as_string(name)) << endmsg; + lilv_nodes_free(required_features); lilv_node_free(name); continue; } + lilv_nodes_free(required_features); info->type = LV2;