From 2716ce41e08c3e112c209b3840ff60d6e9bc2bb2 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 21 Jul 2017 14:51:57 +0200 Subject: Indicate whether to show plugin's inline display in GUI This is currently done by an extension data similarly to LV2_INLINEDISPLAY__interface. --- libs/ardour/ardour/lv2_extensions.h | 1 + libs/ardour/ardour/lv2_plugin.h | 2 ++ libs/ardour/ardour/plugin.h | 1 + libs/ardour/lv2_plugin.cc | 7 +++++++ 4 files changed, 11 insertions(+) (limited to 'libs/ardour') 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 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) { -- cgit v1.2.3