From b9154359a380addf03eb43f36c10989326f678fb Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 6 Dec 2025 18:07:59 +0100 Subject: [PATCH] I/O Plugin: only activate plugin after setting state This fixes an issue with some VST3 plugins (notably NDI). --- libs/ardour/io_plug.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/ardour/io_plug.cc b/libs/ardour/io_plug.cc index e28bdb0cb8..735f3e4e5d 100644 --- a/libs/ardour/io_plug.cc +++ b/libs/ardour/io_plug.cc @@ -56,6 +56,7 @@ IOPlug::IOPlug (Session& s, std::shared_ptr p, bool pre) if (_plugin) { setup (); set_name (p->get_info()->name); + _plugin->activate (); } _input.reset (new IO (_session, io_name (), IO::Input)); _output.reset (new IO (_session, io_name (), IO::Output)); @@ -200,6 +201,8 @@ IOPlug::set_state (const XMLNode& node, int version) Latent::set_state (node, version); + _plugin->activate (); + return 0; } @@ -258,7 +261,6 @@ IOPlug::setup () _plugin->ParameterChangedExternally.connect_same_thread (*this, std::bind (&IOPlug::parameter_changed_externally, this, _1, _2)); _plugin->PropertyChanged.connect_same_thread (*this, std::bind (&IOPlug::property_changed_externally, this, _1, _2)); _plugin->ProcessorChange.connect_same_thread (*this, std::bind (&IOPlug::processor_change, this, _1)); - _plugin->activate (); _plugin->set_insert (this, 0); }