From 7aad0bbe1583af6761905dccf219b93ef12fdede Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 13 Jun 2023 16:50:53 +0200 Subject: [PATCH] CoreMIDI: use dedicated packet buffer on stack --- libs/backends/coreaudio/coremidi_io.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libs/backends/coreaudio/coremidi_io.cc b/libs/backends/coreaudio/coremidi_io.cc index df65dca4ee..ce4c240d93 100644 --- a/libs/backends/coreaudio/coremidi_io.cc +++ b/libs/backends/coreaudio/coremidi_io.cc @@ -252,14 +252,18 @@ CoreMidiIo::recv_event (uint32_t port, double cycle_time_us, uint64_t &time, uin const size_t minsize = 1 + sizeof(uint32_t) + sizeof(MIDITimeStamp) + sizeof(UInt16); while (_rb[port]->read_space() > minsize) { - MIDIPacket packet; + int32_t packet[1024]; size_t rv; uint32_t s = 0; rv = _rb[port]->read((uint8_t*)&s, sizeof(uint32_t)); assert(rv == sizeof(uint32_t)); - rv = _rb[port]->read((uint8_t*)&packet, s); + if (s > 1024) { + _rb[port]->increment_read_idx (s); + continue; + } + rv = _rb[port]->read((uint8_t*)packet, s); assert(rv == s); - _input_queue[port].push_back(std::shared_ptr(new _CoreMIDIPacket (&packet))); + _input_queue[port].push_back(std::shared_ptr(new _CoreMIDIPacket ((MIDIPacket*)&packet))); } UInt64 start = _time_at_cycle_start;