aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi.cpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2020-10-16 11:42:22 +0300
committerWohlstand <admin@wohlnet.ru>2020-10-16 11:42:22 +0300
commit25644ca0571f6380273a22a3bb76628231ed62b1 (patch)
treef02bdc4578b03154f0284a9080661414fdf29b5a /src/adlmidi.cpp
parent7d8e2ad424449af1212fdbba9099760c2e9bf538 (diff)
downloadlibADLMIDI-25644ca0571f6380273a22a3bb76628231ed62b1.tar.gz
libADLMIDI-25644ca0571f6380273a22a3bb76628231ed62b1.tar.bz2
libADLMIDI-25644ca0571f6380273a22a3bb76628231ed62b1.zip
Fixed an infinite loop caused by a zero delay value
Diffstat (limited to 'src/adlmidi.cpp')
-rw-r--r--src/adlmidi.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp
index 6b28e06..469ff09 100644
--- a/src/adlmidi.cpp
+++ b/src/adlmidi.cpp
@@ -1311,6 +1311,8 @@ ADLMIDI_EXPORT int adl_playFormat(ADL_MIDIPlayer *device, int sampleCount,
while(left > 0)
{
{//...
+ if(setup.delay <= 0.0)
+ setup.delay = double(left / 2) / double(setup.PCM_RATE);
const double eat_delay = setup.delay < setup.maxdelay ? setup.delay : setup.maxdelay;
if(hasSkipped)
{
@@ -1419,6 +1421,8 @@ ADLMIDI_EXPORT int adl_generateFormat(struct ADL_MIDIPlayer *device, int sampleC
while(left > 0)
{
{//...
+ if(delay <= 0.0)
+ delay = double(left / 2) / double(setup.PCM_RATE);
const double eat_delay = delay < setup.maxdelay ? delay : setup.maxdelay;
delay -= eat_delay;
setup.carry += double(setup.PCM_RATE) * eat_delay;