diff options
author | Carl Hetherington <carl@carlh.net> | 2010-09-02 19:11:02 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-09-02 19:11:02 +0000 |
commit | 0c496aafed3394075e2830eaa7b48714e4036dd0 (patch) | |
tree | 537b3a633a1bc7c70f36c932110b989e0d29d41b /libs/ardour/plugin_insert.cc | |
parent | ade3609b01409221f7d27b63c86861be5525793f (diff) |
Activate plugins that are added to a PluginInsert after it itself has been activated.
git-svn-id: svn://localhost/ardour2/branches/3.0@7736 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/plugin_insert.cc')
-rw-r--r-- | libs/ardour/plugin_insert.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 7174963ca8..650c929afb 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -92,7 +92,7 @@ PluginInsert::set_count (uint32_t num) uint32_t diff = num - _plugins.size(); for (uint32_t n = 0; n < diff; ++n) { - _plugins.push_back (plugin_factory (_plugins[0])); + add_plugin_with_activation (_plugins[0]); if (require_state) { /* XXX do something */ @@ -762,10 +762,10 @@ PluginInsert::set_state(const XMLNode& node, int version) if (_plugins.size() != count) { - _plugins.push_back (plugin); + add_plugin_with_activation (plugin); for (uint32_t n = 1; n < count; ++n) { - _plugins.push_back (plugin_factory (plugin)); + add_plugin_with_activation (plugin_factory (plugin)); } } @@ -1003,3 +1003,12 @@ PluginInsert::collect_signal_for_analysis(nframes_t nframes) _signal_analysis_collect_nframes_max = nframes; } +/** Add a plugin to our list and activate it if we have already been activated */ +void +PluginInsert::add_plugin_with_activation (boost::shared_ptr<Plugin> plugin) +{ + _plugins.push_back (plugin); + if (active()) { + plugin->activate (); + } +} |