summaryrefslogtreecommitdiff
path: root/libs/ardour/plugin_insert.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/plugin_insert.cc')
-rw-r--r--libs/ardour/plugin_insert.cc22
1 files changed, 14 insertions, 8 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index bd61a9bf2d..910b2cd6dc 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -715,18 +715,14 @@ PluginInsert::configure_io (ChanCount in, ChanCount out)
ChanCount old_in = input_streams ();
ChanCount old_out = output_streams ();
+ _configured_in = in;
+ _configured_out = out;
+
/* set the matching method and number of plugins that we will use to meet this configuration */
_match = private_can_support_io_configuration (in, out);
if (set_count (_match.plugins) == false) {
- return false;
- }
-
- if ( (old_match.method != _match.method && (old_match.method == Split || _match.method == Split))
- || old_in != in
- || old_out != out
- )
- {
PluginIoReConfigure (); /* EMIT SIGNAL */
+ return false;
}
/* configure plugins */
@@ -734,17 +730,27 @@ PluginInsert::configure_io (ChanCount in, ChanCount out)
case Split:
case Hide:
if (_plugins.front()->configure_io (_plugins.front()->get_info()->n_inputs, out)) {
+ PluginIoReConfigure (); /* EMIT SIGNAL */
return false;
}
break;
default:
if (_plugins.front()->configure_io (in, out) == false) {
+ PluginIoReConfigure (); /* EMIT SIGNAL */
return false;
}
break;
}
+ if ( (old_match.method != _match.method && (old_match.method == Split || _match.method == Split))
+ || old_in != in
+ || old_out != out
+ )
+ {
+ PluginIoReConfigure (); /* EMIT SIGNAL */
+ }
+
// we don't know the analysis window size, so we must work with the
// current buffer size here. each request for data fills in these
// buffers and the analyser makes sure it gets enough data for the