diff options
author | Robin Gareus <robin@gareus.org> | 2016-04-13 00:52:47 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-04-13 00:52:47 +0200 |
commit | e77729125ec262b6a01e8fc22b236995cd37a7f6 (patch) | |
tree | 51f516129223e98cf64cd7d572472b39e7a2aa0b | |
parent | e8366dbd830d0188ab78c3f095fd890ef160d7f6 (diff) |
VST report audioMasterPinConnected according to Pin Management
-rw-r--r-- | libs/ardour/plugin_insert.cc | 5 | ||||
-rw-r--r-- | libs/ardour/session_vst.cc | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index ee8016c6af..a1c2e4b165 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -2437,6 +2437,11 @@ PluginInsert::add_plugin (boost::shared_ptr<Plugin> plugin) } } } + + boost::shared_ptr<VSTPlugin> vst = boost::dynamic_pointer_cast<VSTPlugin> (plugin); + if (vst) { + vst->set_insert (this, _plugins.size ()); + } _plugins.push_back (plugin); } diff --git a/libs/ardour/session_vst.cc b/libs/ardour/session_vst.cc index c6978eddc7..0e16ac1ebe 100644 --- a/libs/ardour/session_vst.cc +++ b/libs/ardour/session_vst.cc @@ -26,6 +26,7 @@ #include "ardour/debug.h" #include "ardour/session.h" #include "ardour/tempo.h" +#include "ardour/plugin_insert.h" #include "ardour/windows_vst_plugin.h" #include "ardour/vestige/aeffectx.h" #include "ardour/vst_types.h" @@ -124,11 +125,25 @@ intptr_t Session::vst_callback ( } switch (value) { case 0: + if (plug->plugin_insert ()) { + bool valid; + const ChanMapping& map (plug->plugin_insert ()->input_map (plug->plugin_number ())); + map.get (DataType::AUDIO, index, &valid); + return valid ? 0 : 1; + } if (index < plug->plugin()->numInputs) { return 0; } break; case 1: +#if 0 // investigate, the outputs *are* connected to scratch buffers + if (plug->plugin_insert ()) { + bool valid; + const ChanMapping& map (plug->plugin_insert ()->output_map (plug->plugin_number ())); + map.get (DataType::AUDIO, index, &valid); + return valid ? 0 : 1; + } +#endif if (index < plug->plugin()->numOutputs) { return 0; } |