From 443535a54cdae125d0e56a82268740893f2e9d6f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 20 Jun 2023 01:08:51 -0500 Subject: [PATCH] fix possible hang in runMidiClock issue #1167 --- src/engine/playback.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index c2397d1e..83c0d29f 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1564,8 +1564,10 @@ void DivEngine::runMidiClock(int totalCycles) { if (speedSum<1.0) speedSum=1.0; if (vD<1) vD=1; double bpm=((24.0*divider)/(timeBase*hl*speedSum))*(double)curSubSong->virtualTempoN/vD; + if (bpm<1.0) bpm=1.0; + int increment=got.rate*pow(2,MASTER_CLOCK_PREC)/(bpm); - midiClockCycles+=got.rate*pow(2,MASTER_CLOCK_PREC)/(bpm); + midiClockCycles+=increment; midiClockDrift+=fmod(got.rate*pow(2,MASTER_CLOCK_PREC),(double)(bpm)); if (midiClockDrift>=(bpm)) { midiClockDrift-=(bpm);