diff options
author | Robin Gareus <robin@gareus.org> | 2016-11-13 16:34:27 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-11-13 16:35:06 +0100 |
commit | ec31741ee6d72fe48bdf35eaaf5c0a9c59f328d0 (patch) | |
tree | 2a6186d4a0d32dcb85e7935149411136e353f064 /libs | |
parent | e0766e8f74e740cd24645f3712873a1b669e4995 (diff) |
copy VST state on copy construction
This fixes issues with replicate instances & plugin-analysis instances
not using the same set of parameters.
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/lxvst_plugin.cc | 6 | ||||
-rw-r--r-- | libs/ardour/mac_vst_plugin.cc | 6 | ||||
-rw-r--r-- | libs/ardour/windows_vst_plugin.cc | 6 |
3 files changed, 16 insertions, 2 deletions
diff --git a/libs/ardour/lxvst_plugin.cc b/libs/ardour/lxvst_plugin.cc index 3939048ad4..91ae757883 100644 --- a/libs/ardour/lxvst_plugin.cc +++ b/libs/ardour/lxvst_plugin.cc @@ -58,7 +58,11 @@ LXVSTPlugin::LXVSTPlugin (const LXVSTPlugin &other) _plugin = _state->plugin; - // Plugin::setup_controls (); + XMLNode* root = new XMLNode (other.state_node_name ()); + LocaleGuard lg; + other.add_state (root); + set_state (*root, Stateful::loading_state_version); + delete root; } LXVSTPlugin::~LXVSTPlugin () diff --git a/libs/ardour/mac_vst_plugin.cc b/libs/ardour/mac_vst_plugin.cc index 08c39b1d35..2cb7301ce8 100644 --- a/libs/ardour/mac_vst_plugin.cc +++ b/libs/ardour/mac_vst_plugin.cc @@ -58,7 +58,11 @@ MacVSTPlugin::MacVSTPlugin (const MacVSTPlugin &other) _plugin = _state->plugin; - // Plugin::setup_controls (); + XMLNode* root = new XMLNode (other.state_node_name ()); + LocaleGuard lg; + other.add_state (root); + set_state (*root, Stateful::loading_state_version); + delete root; } MacVSTPlugin::~MacVSTPlugin () diff --git a/libs/ardour/windows_vst_plugin.cc b/libs/ardour/windows_vst_plugin.cc index 17cfa1eed7..256d7f89a8 100644 --- a/libs/ardour/windows_vst_plugin.cc +++ b/libs/ardour/windows_vst_plugin.cc @@ -56,6 +56,12 @@ WindowsVSTPlugin::WindowsVSTPlugin (const WindowsVSTPlugin &other) Session::vst_current_loading_id = 0; _plugin = _state->plugin; + + XMLNode* root = new XMLNode (other.state_node_name ()); + LocaleGuard lg; + other.add_state (root); + set_state (*root, Stateful::loading_state_version); + delete root; } WindowsVSTPlugin::~WindowsVSTPlugin () |