Ignore inline-display unless plugin-meta data explicitly mentions it

This commit is contained in:
Robin Gareus 2020-12-30 18:50:02 +01:00
parent 1ade88edef
commit f3e6ca7c1a
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -216,6 +216,7 @@ public:
LilvNode* auto_automation_control; // atom:supports
LilvNode* auto_automation_controlled; // lv2:portProperty
LilvNode* auto_automation_controller; // lv2:portProperty
LilvNode* inline_display_interface; // lv2:extensionData
LilvNode* inline_display_in_gui; // lv2:optionalFeature
LilvNode* inline_mixer_control; // lv2:PortProperty
#endif
@ -462,6 +463,7 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
_has_state_interface = false;
_can_write_automation = false;
#ifdef LV2_EXTENDED
_display_interface = 0;
_inline_display_in_gui = false;
#endif
_max_latency = 0;
@ -655,9 +657,6 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
lilv_node_free(options_iface_uri);
#ifdef LV2_EXTENDED
_display_interface = (const LV2_Inline_Display_Interface*)
extension_data (LV2_INLINEDISPLAY__interface);
_midname_interface = (const LV2_Midnam_Interface*)
extension_data (LV2_MIDNAM__interface);
if (_midname_interface) {
@ -691,6 +690,14 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
if (lilv_nodes_contains (optional_features, _world.auto_can_write_automatation)) {
_can_write_automation = true;
}
if (lilv_plugin_has_extension_data(plugin, _world.inline_display_interface)) {
_display_interface = (const LV2_Inline_Display_Interface*) extension_data (LV2_INLINEDISPLAY__interface);
}
#ifndef NDEBUG
else if (extension_data (LV2_INLINEDISPLAY__interface)) {
warning << string_compose(_("LV2: Plugin '%1' has inline-display extension without lv2:extensionData meta-data "), name ()) << endmsg;
}
#endif
if (lilv_nodes_contains (optional_features, _world.inline_display_in_gui)) {
_inline_display_in_gui = true;
}
@ -3380,6 +3387,7 @@ LV2World::LV2World()
auto_automation_control = lilv_new_uri(world, LV2_AUTOMATE_URI__control);
auto_automation_controlled = lilv_new_uri(world, LV2_AUTOMATE_URI__controlled);
auto_automation_controller = lilv_new_uri(world, LV2_AUTOMATE_URI__controller);
inline_display_interface = lilv_new_uri(world, LV2_INLINEDISPLAY__interface);
inline_display_in_gui = lilv_new_uri(world, LV2_INLINEDISPLAY__in_gui);
inline_mixer_control = lilv_new_uri(world, "http://ardour.org/lv2/ext#inlineMixerControl");
#endif
@ -3405,6 +3413,7 @@ LV2World::~LV2World()
lilv_node_free(auto_automation_control);
lilv_node_free(auto_automation_controlled);
lilv_node_free(auto_automation_controller);
lilv_node_free(inline_display_interface);
lilv_node_free(inline_display_in_gui);
lilv_node_free(inline_mixer_control);
#endif