summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-10-09 12:17:46 +0000
committerCarl Hetherington <carl@carlh.net>2010-10-09 12:17:46 +0000
commitd86000efd0ef92d57913c07236da465f32e679fb (patch)
treeacb4d6557b260d1517c51a5a936cb07955388276
parent7d2cd8ed5c86a6a799c804df42476dbc16ed3932 (diff)
Fix crash when running an analysis of a plugin with MIDI IO.
git-svn-id: svn://localhost/ardour2/branches/3.0@7889 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/plugin_eq_gui.cc19
-rw-r--r--libs/ardour/buffer_set.cc2
2 files changed, 9 insertions, 12 deletions
diff --git a/gtk2_ardour/plugin_eq_gui.cc b/gtk2_ardour/plugin_eq_gui.cc
index b3c756777a..601e45d909 100644
--- a/gtk2_ardour/plugin_eq_gui.cc
+++ b/gtk2_ardour/plugin_eq_gui.cc
@@ -239,19 +239,14 @@ PluginEqGui::set_buffer_size(uint32_t size, uint32_t signal_size)
_buffer_size = size;
_signal_buffer_size = signal_size;
- // These are for impulse analysis only, the signal analysis uses the actual
- // number of I/O's for the plugininsert
- uint32_t inputs = _plugin->get_info()->n_inputs.n_audio();
- uint32_t outputs = _plugin->get_info()->n_outputs.n_audio();
-
- // buffers for the signal analysis are ensured inside PluginInsert
- uint32_t n_chans = std::max(inputs, outputs);
- _bufferset.ensure_buffers(ARDOUR::DataType::AUDIO, n_chans, _buffer_size);
- _collect_bufferset.ensure_buffers(ARDOUR::DataType::AUDIO, n_chans, _buffer_size);
+ ARDOUR::ChanCount count = ARDOUR::ChanCount::max (_plugin->get_info()->n_inputs, _plugin->get_info()->n_outputs);
+ for (ARDOUR::DataType::iterator i = ARDOUR::DataType::begin(); i != ARDOUR::DataType::end(); ++i) {
+ _bufferset.ensure_buffers (*i, count.get (*i), _buffer_size);
+ _collect_bufferset.ensure_buffers (*i, count.get (*i), _buffer_size);
+ }
- ARDOUR::ChanCount chanCount(ARDOUR::DataType::AUDIO, n_chans);
- _bufferset.set_count(chanCount);
- _collect_bufferset.set_count(chanCount);
+ _bufferset.set_count (count);
+ _collect_bufferset.set_count (count);
}
void
diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc
index e3022e745f..4c802b1443 100644
--- a/libs/ardour/buffer_set.cc
+++ b/libs/ardour/buffer_set.cc
@@ -215,6 +215,8 @@ BufferSet::get(DataType type, size_t i) const
LV2EventBuffer&
BufferSet::get_lv2_midi(bool input, size_t i)
{
+ assert (count().get(DataType::MIDI) > i);
+
MidiBuffer& mbuf = get_midi(i);
LV2Buffers::value_type b = _lv2_buffers.at(i * 2 + (input ? 0 : 1));
LV2EventBuffer* ebuf = b.second;