diff --git a/src/raudio.c b/src/raudio.c index d71fd1012..0502cf481 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -2086,8 +2086,12 @@ float GetMusicTimePlayed(Music music) int subBufferSize = (int)music.stream.buffer->sizeInFrames/2; int framesInFirstBuffer = music.stream.buffer->isSubBufferProcessed[0]? 0 : subBufferSize; int framesInSecondBuffer = music.stream.buffer->isSubBufferProcessed[1]? 0 : subBufferSize; + int framesInBuffers = framesInFirstBuffer + framesInSecondBuffer; + if (framesInBuffers > music.frameCount) { + if (!music.looping) framesInBuffers = music.frameCount; + } int framesSentToMix = music.stream.buffer->frameCursorPos%subBufferSize; - int framesPlayed = (framesProcessed - framesInFirstBuffer - framesInSecondBuffer + framesSentToMix)%(int)music.frameCount; + int framesPlayed = (framesProcessed - framesInBuffers + framesSentToMix)%(int)music.frameCount; if (framesPlayed < 0) framesPlayed += music.frameCount; secondsPlayed = (float)framesPlayed/music.stream.sampleRate; ma_mutex_unlock(&AUDIO.System.lock);