DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit bbc188db8d03e30cd29b67b5fc0257efe9ae67b5
parent 3fddc2794fa55f9e9cd8fdb592a6c690f19a74b7
Author: falkTX <falktx@gmail.com>
Date:   Sun, 11 Aug 2019 05:37:26 +0100

AudioMidiSyncHelper: Fix run cycles with many events

Diffstat:
Mdistrho/DistrhoPluginUtils.hpp | 22++++++++--------------
1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/distrho/DistrhoPluginUtils.hpp b/distrho/DistrhoPluginUtils.hpp @@ -92,9 +92,11 @@ public: // render audio until first midi event, if needed if (const uint32_t firstEventFrame = midiEvents[0].frame) { - frames = midiEvents[0].frame; - remainingFrames -= frames; - totalFramesUsed += frames; + DISTRHO_SAFE_ASSERT_UINT2_RETURN(firstEventFrame < remainingFrames, + firstEventFrame, remainingFrames, false); + frames = firstEventFrame; + remainingFrames -= firstEventFrame; + totalFramesUsed += firstEventFrame; return true; } } @@ -120,7 +122,8 @@ public: midiEvents += midiEventCount; const uint32_t firstEventFrame = midiEvents[0].frame; - DISTRHO_SAFE_ASSERT_RETURN((firstEventFrame - frames) < remainingFrames, false); + DISTRHO_SAFE_ASSERT_UINT2_RETURN(firstEventFrame >= totalFramesUsed, + firstEventFrame, totalFramesUsed, false); midiEventCount = 1; while (midiEventCount < remainingMidiEventCount) @@ -131,16 +134,7 @@ public: break; } - if (totalFramesUsed != 0) - { - for (uint32_t i=0; i < midiEventCount; ++i) - { - DISTRHO_SAFE_ASSERT_UINT2_BREAK(midiEvents[i].frame - totalFramesUsed == 0, - midiEvents[i].frame, totalFramesUsed); - } - } - - frames = remainingFrames - firstEventFrame; + frames = firstEventFrame - totalFramesUsed; remainingFrames -= frames; remainingMidiEventCount -= midiEventCount; totalFramesUsed += frames;