diff --git a/app/render/audioplaybackcache.cpp b/app/render/audioplaybackcache.cpp index e83417e31..df2d334d1 100644 --- a/app/render/audioplaybackcache.cpp +++ b/app/render/audioplaybackcache.cpp @@ -64,10 +64,14 @@ void AudioPlaybackCache::WritePCM(const TimeRange &range, SampleBufferPtr sample // Ensure if we have enough segments to write this data, creating more if not qint64 length_diff = params_.time_to_bytes(range.out()) - playlist_.GetLength(); - while (length_diff > 0) { - qint64 seg_sz = qMin(kDefaultSegmentSize, length_diff); - playlist_.push_back(CreateSegment(seg_sz, playlist_.GetLength())); - length_diff -= seg_sz; + qint64 whole_segments = length_diff / kDefaultSegmentSize; + qint64 remainder = length_diff % kDefaultSegmentSize; + + for (int i = 0; i < whole_segments; i++) { + playlist_.push_back(CreateSegment(kDefaultSegmentSize, playlist_.GetLength())); + } + if (remainder > 0) { + playlist_.push_back(CreateSegment(remainder, playlist_.GetLength())); } // Convert to packed data, which is what we store on disk so it can be played back easily