summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorJohannes Mueller <github@johannes-mueller.org>2017-07-21 14:51:57 +0200
committerRobin Gareus <robin@gareus.org>2017-07-31 21:31:23 +0200
commit2716ce41e08c3e112c209b3840ff60d6e9bc2bb2 (patch)
treec18cec91f49e104ae4b7ecf8ccf6afebf3c1baf0 /libs
parent59775df9be375a249b3c4cbdc7e825eee27c393e (diff)
Indicate whether to show plugin's inline display in GUI
This is currently done by an extension data similarly to LV2_INLINEDISPLAY__interface.
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/lv2_extensions.h1
-rw-r--r--libs/ardour/ardour/lv2_plugin.h2
-rw-r--r--libs/ardour/ardour/plugin.h1
-rw-r--r--libs/ardour/lv2_plugin.cc7
-rw-r--r--libs/plugins/a-comp.lv2/a-comp.c3
5 files changed, 14 insertions, 0 deletions
diff --git a/libs/ardour/ardour/lv2_extensions.h b/libs/ardour/ardour/lv2_extensions.h
index 755f1f0217..26432b54d7 100644
--- a/libs/ardour/ardour/lv2_extensions.h
+++ b/libs/ardour/ardour/lv2_extensions.h
@@ -32,6 +32,7 @@
#define LV2_INLINEDISPLAY_PREFIX LV2_INLINEDISPLAY_URI "#"
#define LV2_INLINEDISPLAY__interface LV2_INLINEDISPLAY_PREFIX "interface"
#define LV2_INLINEDISPLAY__queue_draw LV2_INLINEDISPLAY_PREFIX "queue_draw"
+#define LV2_INLINEDISPLAY__in_gui LV2_INLINEDISPLAY_PREFIX "in_gui"
/** Opaque handle for LV2_Inline_Display::queue_draw() */
typedef void* LV2_Inline_Display_Handle;
diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h
index 202ddbb240..9eb80d187e 100644
--- a/libs/ardour/ardour/lv2_plugin.h
+++ b/libs/ardour/ardour/lv2_plugin.h
@@ -278,6 +278,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
#ifdef LV2_EXTENDED
const LV2_Inline_Display_Interface* _display_interface;
+ bool _show_display_in_generic_gui;
const LV2_Midnam_Interface* _midname_interface;
#endif
@@ -322,6 +323,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
#ifdef LV2_EXTENDED
bool has_inline_display ();
+ bool inline_display_in_gui ();
Plugin::Display_Image_Surface* render_inline_display (uint32_t, uint32_t);
bool has_midnam ();
diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h
index c5eb7d31c9..4e7f45bc8a 100644
--- a/libs/ardour/ardour/plugin.h
+++ b/libs/ardour/ardour/plugin.h
@@ -171,6 +171,7 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent
} Display_Image_Surface;
virtual bool has_inline_display () { return false; }
+ virtual bool inline_display_in_gui () { return false; }
virtual Display_Image_Surface* render_inline_display (uint32_t, uint32_t) { return NULL; }
PBD::Signal0<void> QueueDraw;
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index 2911c6c763..2b6e802172 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -547,6 +547,8 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
_display_interface = (const LV2_Inline_Display_Interface*)
extension_data (LV2_INLINEDISPLAY__interface);
+ _show_display_in_generic_gui = (bool) extension_data (LV2_INLINEDISPLAY__in_gui);
+
_midname_interface = (const LV2_Midnam_Interface*)
extension_data (LV2_MIDNAM__interface);
if (_midname_interface) {
@@ -962,6 +964,11 @@ LV2Plugin::has_inline_display () {
return _display_interface ? true : false;
}
+bool
+LV2Plugin::inline_display_in_gui () {
+ return _show_display_in_generic_gui;
+}
+
Plugin::Display_Image_Surface*
LV2Plugin::render_inline_display (uint32_t w, uint32_t h) {
if (_display_interface) {
diff --git a/libs/plugins/a-comp.lv2/a-comp.c b/libs/plugins/a-comp.lv2/a-comp.c
index 80985715e7..f9518cd76f 100644
--- a/libs/plugins/a-comp.lv2/a-comp.c
+++ b/libs/plugins/a-comp.lv2/a-comp.c
@@ -873,6 +873,9 @@ extension_data(const char* uri)
if (!strcmp(uri, LV2_INLINEDISPLAY__interface)) {
return &display;
}
+ if (!strcmp(uri, LV2_INLINEDISPLAY__in_gui)) {
+ return &display;
+ }
#endif
return NULL;
}