mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 12:16:30 +01:00
CoreMIDI: use dedicated packet buffer on stack
This commit is contained in:
parent
05c29e25f9
commit
7aad0bbe15
1 changed files with 7 additions and 3 deletions
|
|
@ -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);
|
const size_t minsize = 1 + sizeof(uint32_t) + sizeof(MIDITimeStamp) + sizeof(UInt16);
|
||||||
|
|
||||||
while (_rb[port]->read_space() > minsize) {
|
while (_rb[port]->read_space() > minsize) {
|
||||||
MIDIPacket packet;
|
int32_t packet[1024];
|
||||||
size_t rv;
|
size_t rv;
|
||||||
uint32_t s = 0;
|
uint32_t s = 0;
|
||||||
rv = _rb[port]->read((uint8_t*)&s, sizeof(uint32_t));
|
rv = _rb[port]->read((uint8_t*)&s, sizeof(uint32_t));
|
||||||
assert(rv == 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);
|
assert(rv == s);
|
||||||
_input_queue[port].push_back(std::shared_ptr<CoreMIDIPacket>(new _CoreMIDIPacket (&packet)));
|
_input_queue[port].push_back(std::shared_ptr<CoreMIDIPacket>(new _CoreMIDIPacket ((MIDIPacket*)&packet)));
|
||||||
}
|
}
|
||||||
|
|
||||||
UInt64 start = _time_at_cycle_start;
|
UInt64 start = _time_at_cycle_start;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue