Arbitrarily increase MIDI process buffer size to avoid overruns with very dense data.

git-svn-id: svn://localhost/ardour2/branches/3.0@3389 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
David Robillard 2008-05-22 16:44:22 +00:00
parent 8a97a89f3e
commit f360ef94da
3 changed files with 13 additions and 2 deletions

View file

@ -103,6 +103,12 @@ BufferSet::ensure_buffers(DataType type, size_t num_buffers, size_t buffer_capac
if (num_buffers == 0)
return;
// FIXME: Kludge to make MIDI buffers larger (size is bytes, not frames)
// See MidiPort::MidiPort
// We probably need a map<DataType, size_t> parameter for capacity
if (type == DataType::MIDI)
buffer_capacity *= 4;
// The vector of buffers of the type we care about
BufferVec& bufs = _buffers[type];

View file

@ -649,7 +649,10 @@ MidiDiskstream::set_pending_overwrite (bool yn)
int
MidiDiskstream::overwrite_existing_buffers ()
{
//cerr << "MDS: overwrite_existing_buffers() (does nothing)" << endl;
read(overwrite_frame, disk_io_chunk_frames, false);
overwrite_queued = false;
pending_overwrite = false;
return 0;
}

View file

@ -31,7 +31,9 @@ MidiPort::MidiPort (const std::string& name, Flags flags, bool external, nframes
, BaseMidiPort (name, flags)
, PortFacade (name, flags)
{
_buffer = new MidiBuffer (capacity);
// FIXME: size kludge (see BufferSet::ensure_buffers)
// Jack needs to tell us this
_buffer = new MidiBuffer (capacity * 4);
if (external) {
/* external ports use the same buffer for the jack port (_ext_port)