Signal wish to show inline display in gui by lv2:optionalFeature

... in .ttl file rather than by extension_data() in code. That's more in the
spirit of LV2.
This commit is contained in:
Johannes Mueller 2017-07-23 21:10:07 +02:00 committed by Robin Gareus
parent e75db87bf6
commit 6663a26755
6 changed files with 14 additions and 10 deletions

View file

@ -278,7 +278,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
#ifdef LV2_EXTENDED #ifdef LV2_EXTENDED
const LV2_Inline_Display_Interface* _display_interface; const LV2_Inline_Display_Interface* _display_interface;
bool _show_display_in_generic_gui; bool _inline_display_in_gui;
const LV2_Midnam_Interface* _midname_interface; const LV2_Midnam_Interface* _midname_interface;
#endif #endif

View file

@ -190,6 +190,7 @@ public:
LilvNode* auto_automation_control; // atom:supports LilvNode* auto_automation_control; // atom:supports
LilvNode* auto_automation_controlled; // lv2:portProperty LilvNode* auto_automation_controlled; // lv2:portProperty
LilvNode* auto_automation_controller; // lv2:portProperty LilvNode* auto_automation_controller; // lv2:portProperty
LilvNode* inline_display_in_gui; // lv2:optionalFeature
#endif #endif
private: private:
@ -390,6 +391,7 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
_was_activated = false; _was_activated = false;
_has_state_interface = false; _has_state_interface = false;
_can_write_automation = false; _can_write_automation = false;
_inline_display_in_gui = false;
_max_latency = 0; _max_latency = 0;
_current_latency = 0; _current_latency = 0;
_impl->block_length = _session.get_block_size(); _impl->block_length = _session.get_block_size();
@ -547,8 +549,6 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
_display_interface = (const LV2_Inline_Display_Interface*) _display_interface = (const LV2_Inline_Display_Interface*)
extension_data (LV2_INLINEDISPLAY__interface); extension_data (LV2_INLINEDISPLAY__interface);
_show_display_in_generic_gui = (bool) extension_data (LV2_INLINEDISPLAY__in_gui);
_midname_interface = (const LV2_Midnam_Interface*) _midname_interface = (const LV2_Midnam_Interface*)
extension_data (LV2_MIDNAM__interface); extension_data (LV2_MIDNAM__interface);
if (_midname_interface) { if (_midname_interface) {
@ -595,6 +595,9 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
if (lilv_nodes_contains (optional_features, _world.auto_can_write_automatation)) { if (lilv_nodes_contains (optional_features, _world.auto_can_write_automatation)) {
_can_write_automation = true; _can_write_automation = true;
} }
if (lilv_nodes_contains (optional_features, _world.inline_display_in_gui)) {
_inline_display_in_gui = true;
}
lilv_nodes_free(optional_features); lilv_nodes_free(optional_features);
#endif #endif
@ -966,7 +969,7 @@ LV2Plugin::has_inline_display () {
bool bool
LV2Plugin::inline_display_in_gui () { LV2Plugin::inline_display_in_gui () {
return _show_display_in_generic_gui; return _inline_display_in_gui;
} }
Plugin::Display_Image_Surface* Plugin::Display_Image_Surface*
@ -3163,6 +3166,7 @@ LV2World::LV2World()
auto_automation_control = lilv_new_uri(world, LV2_AUTOMATE_URI__control); auto_automation_control = lilv_new_uri(world, LV2_AUTOMATE_URI__control);
auto_automation_controlled = lilv_new_uri(world, LV2_AUTOMATE_URI__controlled); auto_automation_controlled = lilv_new_uri(world, LV2_AUTOMATE_URI__controlled);
auto_automation_controller = lilv_new_uri(world, LV2_AUTOMATE_URI__controller); auto_automation_controller = lilv_new_uri(world, LV2_AUTOMATE_URI__controller);
inline_display_in_gui = lilv_new_uri(world, LV2_INLINEDISPLAY__in_gui);
#endif #endif
#ifdef HAVE_LV2_1_2_0 #ifdef HAVE_LV2_1_2_0
bufz_powerOf2BlockLength = lilv_new_uri(world, LV2_BUF_SIZE__powerOf2BlockLength); bufz_powerOf2BlockLength = lilv_new_uri(world, LV2_BUF_SIZE__powerOf2BlockLength);

View file

@ -14,7 +14,8 @@
a lv2:Plugin, doap:Project, lv2:CompressorPlugin ; a lv2:Plugin, doap:Project, lv2:CompressorPlugin ;
lv2:optionalFeature <http://lv2plug.in/ns/lv2core#hardRTCapable> ; lv2:optionalFeature <http://lv2plug.in/ns/lv2core#hardRTCapable> ;
lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#queue_draw> ; lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#queue_draw> ;
lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#in_gui> ;
lv2:port [ lv2:port [
a lv2:InputPort, lv2:ControlPort ; a lv2:InputPort, lv2:ControlPort ;

View file

@ -876,9 +876,6 @@ extension_data(const char* uri)
if (!strcmp(uri, LV2_INLINEDISPLAY__interface)) { if (!strcmp(uri, LV2_INLINEDISPLAY__interface)) {
return &display; return &display;
} }
if (!strcmp(uri, LV2_INLINEDISPLAY__in_gui)) {
return &display;
}
#endif #endif
return NULL; return NULL;
} }

View file

@ -14,7 +14,8 @@
a lv2:Plugin, doap:Project, lv2:CompressorPlugin ; a lv2:Plugin, doap:Project, lv2:CompressorPlugin ;
lv2:optionalFeature <http://lv2plug.in/ns/lv2core#hardRTCapable> ; lv2:optionalFeature <http://lv2plug.in/ns/lv2core#hardRTCapable> ;
lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#queue_draw> ; lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#queue_draw> ;
lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#in_gui> ;
lv2:port [ lv2:port [
a lv2:InputPort, lv2:ControlPort ; a lv2:InputPort, lv2:ControlPort ;

View file

@ -32,7 +32,8 @@ unit:db1
a lv2:Plugin, doap:Project, lv2:FilterPlugin ; a lv2:Plugin, doap:Project, lv2:FilterPlugin ;
lv2:optionalFeature <http://lv2plug.in/ns/lv2core#hardRTCapable> ; lv2:optionalFeature <http://lv2plug.in/ns/lv2core#hardRTCapable> ;
lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#queue_draw> ; lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#queue_draw> ;
lv2:optionalFeature <http://harrisonconsoles.com/lv2/inlinedisplay#in_gui> ;
lv2:requiredFeature <http://lv2plug.in/ns/ext/options#options> , lv2:requiredFeature <http://lv2plug.in/ns/ext/options#options> ,
<http://lv2plug.in/ns/ext/urid#map> ; <http://lv2plug.in/ns/ext/urid#map> ;