summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_buffer.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-10-17 16:49:31 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-10-17 16:49:31 +0000
commit239ec39da6583e6e00cd03fa3bde8f1e27016b4d (patch)
tree8e46988053361eefbbcaa0291f5d0540cd0ab9c7 /libs/ardour/midi_buffer.cc
parentdf28e90c673b209b946463efa02f35c5a0f6bed5 (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.cc25
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