diff options
author | David Robillard <d@drobilla.net> | 2009-05-04 15:50:51 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-05-04 15:50:51 +0000 |
commit | ca10cc82a4374a5b413c06ead6cc89c53f8881ee (patch) | |
tree | 3d44716ed02d80bd1256609631c77a730d04e169 /libs/ardour/session.cc | |
parent | 9b06b1da0cec57a6848cf1f7920691ae022b30e7 (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.cc | 25 |
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) { |