diff options
Diffstat (limited to 'libs/ardour/ardour/midi_event.h')
-rw-r--r-- | libs/ardour/ardour/midi_event.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libs/ardour/ardour/midi_event.h b/libs/ardour/ardour/midi_event.h index 61e6b8af6e..a04a19cec8 100644 --- a/libs/ardour/ardour/midi_event.h +++ b/libs/ardour/ardour/midi_event.h @@ -21,7 +21,9 @@ #ifndef __ardour_midi_event_h__ #define __ardour_midi_event_h__ +#include <ardour/types.h> #include <ardour/midi_events.h> +#include <stdint.h> /** If this is not defined, all methods of MidiEvent are RT safe * but MidiEvent will never deep copy and (depending on the scenario) @@ -38,7 +40,7 @@ namespace ARDOUR { */ struct MidiEvent { #ifdef MIDI_EVENT_ALLOW_ALLOC - MidiEvent(double t=0, size_t s=0, Byte* b=NULL, bool owns_buffer=false) + MidiEvent(double t=0, uint32_t s=0, Byte* b=NULL, bool owns_buffer=false) : _time(t) , _size(s) , _buffer(b) @@ -96,7 +98,15 @@ struct MidiEvent { } inline bool owns_buffer() const { return _owns_buffer; } - inline void set_buffer(Byte* buf) { assert(!_owns_buffer); _buffer = buf; } + + inline void set_buffer(Byte* buf) { + if (_owns_buffer) { + free(_buffer); + _buffer = NULL; + } + _buffer = buf; + _owns_buffer = false; + } #else |