From d1cc7e5a50e2144d7aea01bc5eceed6657513c1b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 29 Nov 2013 22:26:33 -0500 Subject: fix up a bunch of confusion regarding the size/capacity/allocation of audio & midi buffers --- libs/ardour/midi_buffer.cc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'libs/ardour/midi_buffer.cc') diff --git a/libs/ardour/midi_buffer.cc b/libs/ardour/midi_buffer.cc index d75b861ea1..1a6cb7fa26 100644 --- a/libs/ardour/midi_buffer.cc +++ b/libs/ardour/midi_buffer.cc @@ -33,12 +33,12 @@ using namespace PBD; // FIXME: mirroring for MIDI buffers? MidiBuffer::MidiBuffer(size_t capacity) - : Buffer(DataType::MIDI, capacity) - , _data(0) + : Buffer (DataType::MIDI) + , _data (0) { if (capacity) { - resize(_capacity); - silence(_capacity); + resize (capacity); + silence (capacity); } } @@ -50,17 +50,22 @@ MidiBuffer::~MidiBuffer() void MidiBuffer::resize(size_t size) { - assert(size > 0); + if (_data && size < _capacity) { + + if (_size < size) { + /* truncate */ + _size = size; + } - if (size < _capacity) { return; } - free(_data); + free (_data); + + cache_aligned_malloc ((void**) &_data, size); _size = 0; _capacity = size; - cache_aligned_malloc ((void**) &_data, _capacity); assert(_data); } -- cgit v1.2.3