summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/generic_pluginui.cc8
-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
6 files changed, 20 insertions, 2 deletions
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index 8530486c83..2578a39184 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -529,9 +529,8 @@ GenericPluginUI::automatic_layout (const std::vector<ControlUI*>& control_uis)
delete output_table;
}
- if (plugin->has_inline_display ()) {
+ if (plugin->has_inline_display () && plugin->inline_display_in_gui ()) {
PluginDisplay* pd = manage (new PluginDisplay (plugin, 300));
- pd->set_name("inside gui");
hpacker.pack_end (*pd, true, true);
}
show_all();
@@ -551,6 +550,11 @@ GenericPluginUI::custom_layout (const std::vector<ControlUI*>& control_uis)
layout->attach (*cui, cui->x0, cui->x1, cui->y0, cui->y1, FILL, SHRINK, 2, 2);
}
hpacker.pack_start (*layout, true, true);
+
+ if (plugin->has_inline_display () && plugin->inline_display_in_gui ()) {
+ PluginDisplay* pd = manage (new PluginDisplay (plugin, 300));
+ hpacker.pack_end (*pd, true, true);
+ }
}
GenericPluginUI::ControlUI::ControlUI (const Evoral::Parameter& p)
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;
}