diff options
author | Matthew Hoops | 2014-08-01 01:39:46 -0400 |
---|---|---|
committer | Matthew Hoops | 2014-08-01 01:39:46 -0400 |
commit | d8ef40879ca8f9d05384135ad2383f3677cb38cf (patch) | |
tree | 49754c61987092e4c65375a2ebf8d09bb34474b2 | |
parent | 82d464367b1060003886b1a331a03f5ca099499f (diff) | |
download | scummvm-rg350-d8ef40879ca8f9d05384135ad2383f3677cb38cf.tar.gz scummvm-rg350-d8ef40879ca8f9d05384135ad2383f3677cb38cf.tar.bz2 scummvm-rg350-d8ef40879ca8f9d05384135ad2383f3677cb38cf.zip |
AUDIO: Better handle endOfStream() vs endOfData() in SubLoopingAudioStream
-rw-r--r-- | audio/audiostream.cpp | 14 | ||||
-rw-r--r-- | audio/audiostream.h | 3 |
2 files changed, 15 insertions, 2 deletions
diff --git a/audio/audiostream.cpp b/audio/audiostream.cpp index fbf672ca22..c413edb73d 100644 --- a/audio/audiostream.cpp +++ b/audio/audiostream.cpp @@ -193,7 +193,7 @@ int SubLoopingAudioStream::readBuffer(int16 *buffer, const int numSamples) { int framesRead = _parent->readBuffer(buffer, framesLeft); _pos = _pos.addFrames(framesRead); - if (framesRead < framesLeft && _parent->endOfData()) { + if (framesRead < framesLeft && _parent->endOfStream()) { // TODO: Proper error indication. _done = true; return framesRead; @@ -220,6 +220,18 @@ int SubLoopingAudioStream::readBuffer(int16 *buffer, const int numSamples) { } } +bool SubLoopingAudioStream::endOfData() const { + // We're out of data if this stream is finished or the parent + // has run out of data for now. + return _done || _parent->endOfData(); +} + +bool SubLoopingAudioStream::endOfStream() const { + // The end of the stream has been reached only when we've gone + // through all the iterations. + return _done; +} + #pragma mark - #pragma mark --- SubSeekableAudioStream --- #pragma mark - diff --git a/audio/audiostream.h b/audio/audiostream.h index ad842d7ca8..e3b8773823 100644 --- a/audio/audiostream.h +++ b/audio/audiostream.h @@ -248,7 +248,8 @@ public: DisposeAfterUse::Flag disposeAfterUse = DisposeAfterUse::YES); int readBuffer(int16 *buffer, const int numSamples); - bool endOfData() const { return _done; } + bool endOfData() const; + bool endOfStream() const; bool isStereo() const { return _parent->isStereo(); } int getRate() const { return _parent->getRate(); } |