Browse Source

Tweak findNextEvent() to catch future cases of lost events

tags/v1.9.11
falkTX 6 years ago
parent
commit
31eb7760b0
1 changed files with 12 additions and 5 deletions
  1. +12
    -5
      source/backend/plugin/CarlaPluginNative.cpp

+ 12
- 5
source/backend/plugin/CarlaPluginNative.cpp View File

@@ -1435,14 +1435,21 @@ public:
} }
} }


const EngineEvent& findNextEvent(const uint32_t index)
const EngineEvent& findNextEvent()
{ {
if (fMidiIn.count == 1) if (fMidiIn.count == 1)
{ {
if (index >= fMidiIn.multiportData[0].cachedEventCount)
NativePluginMidiInData::MultiPortData& multiportData(fMidiIn.multiportData[0]);

if (multiportData.usedIndex == multiportData.cachedEventCount)
{
const uint32_t eventCount = pData->event.portIn->getEventCount();
CARLA_SAFE_ASSERT_INT2(eventCount == multiportData.cachedEventCount,
eventCount, multiportData.cachedEventCount);
return kNullEngineEvent; return kNullEngineEvent;
}


return pData->event.portIn->getEvent(index);
return pData->event.portIn->getEvent(multiportData.usedIndex++);
} }


uint32_t lowestSampleTime = 9999999; uint32_t lowestSampleTime = 9999999;
@@ -1643,9 +1650,9 @@ public:
else else
nextBankId = 0; nextBankId = 0;


for (uint32_t i=0;; ++i)
for (;;)
{ {
const EngineEvent& event(findNextEvent(i));
const EngineEvent& event(findNextEvent());


if (event.type == kEngineEventTypeNull) if (event.type == kEngineEventTypeNull)
break; break;


Loading…
Cancel
Save