diff options
Diffstat (limited to 'libs/ardour/plugin_insert.cc')
-rw-r--r-- | libs/ardour/plugin_insert.cc | 22 |
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 |