summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-05-04 15:50:51 +0000
committerDavid Robillard <d@drobilla.net>2009-05-04 15:50:51 +0000
commitca10cc82a4374a5b413c06ead6cc89c53f8881ee (patch)
tree3d44716ed02d80bd1256609631c77a730d04e169 /libs/ardour/session.cc
parent9b06b1da0cec57a6848cf1f7920691ae022b30e7 (diff)
Preliminary MIDI plugin support.
git-svn-id: svn://localhost/ardour2/branches/3.0@5036 d708f5d6-7413-0410-9779-e7cbd77b26cf
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) {