[Scummvm-cvs-logs] SF.net SVN: scummvm:[48018] scummvm/trunk/sound/audiostream.cpp
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Tue Feb 9 22:51:47 CET 2010
Revision: 48018
http://scummvm.svn.sourceforge.net/scummvm/?rev=48018&view=rev
Author: lordhoto
Date: 2010-02-09 21:51:47 +0000 (Tue, 09 Feb 2010)
Log Message:
-----------
Fix SubLoopingAudioStream's readBuffer implementation.
Modified Paths:
--------------
scummvm/trunk/sound/audiostream.cpp
Modified: scummvm/trunk/sound/audiostream.cpp
===================================================================
--- scummvm/trunk/sound/audiostream.cpp 2010-02-09 21:51:28 UTC (rev 48017)
+++ scummvm/trunk/sound/audiostream.cpp 2010-02-09 21:51:47 UTC (rev 48018)
@@ -180,11 +180,14 @@
}
int SubLoopingAudioStream::readBuffer(int16 *buffer, const int numSamples) {
+ if (_done)
+ return 0;
+
int framesLeft = MIN(_loopEnd.frameDiff(_pos), numSamples);
int framesRead = _parent->readBuffer(buffer, framesLeft);
_pos = _pos.addFrames(framesRead);
- if (framesLeft < numSamples || framesRead < framesLeft) {
+ if (_pos == _loopEnd) {
if (_loops != 0) {
--_loops;
if (!_loops) {
@@ -200,13 +203,10 @@
_pos = _loopStart;
framesLeft = numSamples - framesLeft;
- framesRead += _parent->readBuffer(buffer + framesRead, framesLeft);
-
- if (_parent->endOfStream())
- _done = true;
+ return framesRead + readBuffer(buffer + framesRead, framesLeft);
+ } else {
+ return framesRead;
}
-
- return framesRead;
}
#pragma mark -
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list