[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