summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_buffer.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-11-29 22:26:33 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2013-11-29 22:26:33 -0500
commitd1cc7e5a50e2144d7aea01bc5eceed6657513c1b (patch)
treeae923ee081a7b19a1f3cc29da50dd12de5bd5596 /libs/ardour/midi_buffer.cc
parent0c4457fa8361d7678b09ec5911917750e7ade67e (diff)
fix up a bunch of confusion regarding the size/capacity/allocation of audio & midi buffers
Diffstat (limited to 'libs/ardour/midi_buffer.cc')
-rw-r--r--libs/ardour/midi_buffer.cc21
1 files changed, 13 insertions, 8 deletions
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);
}