diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-10-17 16:49:31 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-10-17 16:49:31 +0000 |
commit | 239ec39da6583e6e00cd03fa3bde8f1e27016b4d (patch) | |
tree | 8e46988053361eefbbcaa0291f5d0540cd0ab9c7 /libs/ardour/midi_buffer.cc | |
parent | df28e90c673b209b946463efa02f35c5a0f6bed5 (diff) |
new internal port type, round I, plus tiny fix for legalize_for_xml() (also for 2.0-ongoing)
git-svn-id: svn://localhost/ardour2/trunk@2559 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_buffer.cc')
-rw-r--r-- | libs/ardour/midi_buffer.cc | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/libs/ardour/midi_buffer.cc b/libs/ardour/midi_buffer.cc index e971e9ae8f..52f04eaf91 100644 --- a/libs/ardour/midi_buffer.cc +++ b/libs/ardour/midi_buffer.cc @@ -38,20 +38,31 @@ MidiBuffer::MidiBuffer(size_t capacity) , _events(NULL) , _data(NULL) { - assert(capacity > 0); + _data = 0; + resize (_capacity); + silence(_capacity); +} - _size = 0; +void +MidiBuffer::resize (size_t size) +{ + assert(size > 0); + if (_data) { + free (_data); + } + + _size = 0; + _capacity = size; #ifdef NO_POSIX_MEMALIGN - _events = (MidiEvent *) malloc(sizeof(MidiEvent) * capacity); - _data = (Byte *) malloc(sizeof(Byte) * capacity * MAX_EVENT_SIZE); + _events = (MidiEvent *) malloc(sizeof(MidiEvent) * _capacity); + _data = (Byte *) malloc(sizeof(Byte) * _capacity * MAX_EVENT_SIZE); #else - posix_memalign((void**)&_events, CPU_CACHE_ALIGN, sizeof(MidiEvent) * capacity); - posix_memalign((void**)&_data, CPU_CACHE_ALIGN, sizeof(Byte) * capacity * MAX_EVENT_SIZE); + posix_memalign((void**)&_events, CPU_CACHE_ALIGN, sizeof(MidiEvent) * _capacity); + posix_memalign((void**)&_data, CPU_CACHE_ALIGN, sizeof(Byte) * _capacity * MAX_EVENT_SIZE); #endif assert(_data); assert(_events); - silence(_capacity); } void |