summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-08-14 18:12:05 +0200
committerRobin Gareus <robin@gareus.org>2015-08-14 18:13:05 +0200
commite72c0b81a7a1fe569f698e2e7a21ce91f42e8f14 (patch)
treee02b2b5c96c6fd72d6cca9448fee9376c8131b52 /libs
parent4129b8865c6cc57ad922130c3784b0337df9d507 (diff)
don't even list LV2 plugins that cannot be used.
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/lv2_plugin.cc21
1 files changed, 19 insertions, 2 deletions
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index b533120ec2..a3283e8d36 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -424,7 +424,7 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
if (lilv_plugin_has_feature(plugin, _world.lv2_inPlaceBroken)) {
error << string_compose(
- _("LV2: \"%1\" cannot be used, since it cannot do inplace processing"),
+ _("LV2: \"%1\" cannot be used, since it cannot do inplace processing."),
lilv_node_as_string(_impl->name)) << endmsg;
lilv_node_free(_impl->name);
lilv_node_free(_impl->author);
@@ -2381,7 +2381,6 @@ LV2World::LV2World()
units_db = lilv_new_uri(world, LV2_UNITS__db);
patch_writable = lilv_new_uri(world, LV2_PATCH__writable);
patch_Message = lilv_new_uri(world, LV2_PATCH__Message);
-
bufz_powerOf2BlockLength = lilv_new_uri(world, LV2_BUF_SIZE__powerOf2BlockLength);
bufz_fixedBlockLength = lilv_new_uri(world, LV2_BUF_SIZE__fixedBlockLength);
@@ -2513,6 +2512,24 @@ LV2PluginInfo::discover()
continue;
}
+ if (lilv_plugin_has_feature(p, world.lv2_inPlaceBroken)) {
+ warning << string_compose(
+ _("Ignoring LV2 plugin \"%1\" since it cannot do inplace processing."),
+ lilv_node_as_string(name)) << endmsg;
+ lilv_node_free(name);
+ continue;
+ }
+
+ if (lilv_plugin_has_feature(p, _world.bufz_powerOf2BlockLength) ||
+ lilv_plugin_has_feature(p, 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_node_free(name);
+ continue;
+ }
+
info->type = LV2;
info->name = string(lilv_node_as_string(name));