Renaming for Windows compatibility.
[jack2.git] / linux / alsarawmidi / JackALSARawMidiSendQueue.cpp
blob80a11b56f3e69a92ae77b575f88c8f911751e27d
1 #include <cassert>
3 #include "JackALSARawMidiSendQueue.h"
4 #include "JackMidiUtil.h"
6 using Jack::JackALSARawMidiSendQueue;
8 JackALSARawMidiSendQueue::JackALSARawMidiSendQueue(snd_rawmidi_t *rawmidi)
10 this->rawmidi = rawmidi;
11 blocked = false;
14 Jack::JackMidiWriteQueue::EnqueueResult
15 JackALSARawMidiSendQueue::EnqueueEvent(jack_nframes_t time, size_t size,
16 jack_midi_data_t *buffer)
18 assert(size == 1);
19 if (time > GetCurrentFrame()) {
20 return EVENT_EARLY;
22 ssize_t result = snd_rawmidi_write(rawmidi, buffer, 1);
23 switch (result) {
24 case 1:
25 blocked = false;
26 return OK;
27 case -EWOULDBLOCK:
28 blocked = true;
29 return BUFFER_FULL;
31 jack_error("JackALSARawMidiSendQueue::EnqueueEvent - snd_rawmidi_write: "
32 "%s", snd_strerror(result));
33 return EN_ERROR;
36 bool
37 JackALSARawMidiSendQueue::IsBlocked()
39 return blocked;