summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc25
1 files changed, 14 insertions, 11 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index c5904de869..0297aa76bb 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -3849,21 +3849,24 @@ Session::ensure_buffers (ChanCount howmany)
return; // too early? (is this ok?)
}
- // We need at least 2 MIDI scratch buffers to mix/merge
- if (howmany.n_midi() < 2) {
- howmany.set_midi(2);
+ for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
+ size_t count = std::max(_scratch_buffers->available().get(*t), howmany.get(*t));
+ _scratch_buffers->ensure_buffers (*t, count, _engine.raw_buffer_size(*t));
+ _mix_buffers->ensure_buffers (*t, count, _engine.raw_buffer_size(*t));
+ _silent_buffers->ensure_buffers (*t, count, _engine.raw_buffer_size(*t));
}
- // FIXME: JACK needs to tell us maximum MIDI buffer size
- // Using nasty assumption (max # events == nframes) for now
-
- _scratch_buffers->ensure_buffers(howmany, current_block_size);
- _mix_buffers->ensure_buffers(howmany, current_block_size);
- _silent_buffers->ensure_buffers(howmany, current_block_size);
-
allocate_pan_automation_buffers (current_block_size, howmany.n_audio(), false);
}
+void
+Session::ensure_buffer_set(BufferSet& buffers, const ChanCount& count)
+{
+ for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
+ buffers.ensure_buffers(*t, count.get(*t), _engine.raw_buffer_size(*t));
+ }
+}
+
uint32_t
Session::next_insert_id ()
{
@@ -4149,7 +4152,7 @@ Session::write_one_track (AudioTrack& track, nframes_t start, nframes_t end,
to_do = len;
/* create a set of reasonably-sized buffers */
- buffers.ensure_buffers(nchans, chunk_size);
+ buffers.ensure_buffers(DataType::AUDIO, nchans.n_audio(), chunk_size);
buffers.set_count(nchans);
for (vector<boost::shared_ptr<Source> >::iterator src=srcs.begin(); src != srcs.end(); ++src) {