diff --git a/src/AudioIO.cpp b/src/AudioIO.cpp index 415088b2a..86244d3a6 100644 --- a/src/AudioIO.cpp +++ b/src/AudioIO.cpp @@ -777,7 +777,17 @@ private: }; struct Duration { - Duration (ScrubState &queue_) : queue(queue_) {} + Duration (ScrubState &queue_) : queue(queue_) + { + do { + clockTime = ::wxGetLocalTimeMillis(); + duration = static_cast( + queue.mRate * + (clockTime - queue.mLastScrubTimeMillis).ToDouble() + / 1000.0 + ); + } while( duration <= 0 && (::wxMilliSleep(1), true) ); + } ~Duration () { if(!cancelled) @@ -787,10 +797,8 @@ private: void Cancel() { cancelled = true; } ScrubState &queue; - const wxLongLong clockTime { ::wxGetLocalTimeMillis() }; - const sampleCount duration { static_cast - (queue.mRate * (clockTime - queue.mLastScrubTimeMillis).ToDouble() / 1000.0) - }; + wxLongLong clockTime; + sampleCount duration; bool cancelled { false }; };