| @@ -1748,6 +1748,8 @@ public: | |||||
| pData->event.portOut->writeMidiEvent(fMidiEvents[k].time, channel, port, fMidiEvents[k].size, fMidiEvents[k].data); | pData->event.portOut->writeMidiEvent(fMidiEvents[k].time, channel, port, fMidiEvents[k].size, fMidiEvents[k].data); | ||||
| else if (port < fMidiOut.count) | else if (port < fMidiOut.count) | ||||
| fMidiOut.ports[port]->writeMidiEvent(fMidiEvents[k].time, channel, port, fMidiEvents[k].size, fMidiEvents[k].data); | fMidiOut.ports[port]->writeMidiEvent(fMidiEvents[k].time, channel, port, fMidiEvents[k].size, fMidiEvents[k].data); | ||||
| else | |||||
| carla_stdout("MIDI event output port out of bounds!"); | |||||
| } | } | ||||
| } // End of Control and MIDI Output | } // End of Control and MIDI Output | ||||
| @@ -2119,28 +2121,15 @@ protected: | |||||
| bool handleWriteMidiEvent(const NativeMidiEvent* const event) | bool handleWriteMidiEvent(const NativeMidiEvent* const event) | ||||
| { | { | ||||
| CARLA_ASSERT(pData->enabled); | |||||
| CARLA_ASSERT(fIsProcessing); | |||||
| CARLA_ASSERT(fMidiOut.count > 0 || pData->event.portOut != nullptr); | |||||
| CARLA_ASSERT(event != nullptr); | |||||
| CARLA_ASSERT(event->data[0] != 0); | |||||
| if (! pData->enabled) | |||||
| return false; | |||||
| if (fMidiOut.count == 0) | |||||
| return false; | |||||
| if (event == nullptr) | |||||
| return false; | |||||
| if (event->data[0] == 0) | |||||
| return false; | |||||
| if (! fIsProcessing) | |||||
| { | |||||
| carla_stderr2("CarlaPluginNative::handleWriteMidiEvent(%p) - received MIDI out event outside audio thread, ignoring", event); | |||||
| return false; | |||||
| } | |||||
| CARLA_SAFE_ASSERT_RETURN(pData->enabled, false); | |||||
| CARLA_SAFE_ASSERT_RETURN(fIsProcessing, false); | |||||
| CARLA_SAFE_ASSERT_RETURN(fMidiOut.count > 0, false); | |||||
| CARLA_SAFE_ASSERT_RETURN(pData->event.portOut != nullptr, false); | |||||
| CARLA_SAFE_ASSERT_RETURN(event != nullptr, false); | |||||
| CARLA_SAFE_ASSERT_RETURN(event->data[0] != 0, false); | |||||
| // reverse-find first free event, and put it there | // reverse-find first free event, and put it there | ||||
| for (uint32_t i=(kPluginMaxMidiEvents*2)-1; i > fMidiEventCount; --i) | |||||
| for (uint32_t i=(kPluginMaxMidiEvents*2)-1; i >= fMidiEventCount; --i) | |||||
| { | { | ||||
| if (fMidiEvents[i].data[0] == 0) | if (fMidiEvents[i].data[0] == 0) | ||||
| { | { | ||||
| @@ -2149,6 +2138,7 @@ protected: | |||||
| } | } | ||||
| } | } | ||||
| carla_stdout("CarlaPluginNative::handleWriteMidiEvent(%p) - buffer full", event); | |||||
| return false; | return false; | ||||
| } | } | ||||