diff options
author | Matthew Hoops | 2011-08-24 09:52:41 -0400 |
---|---|---|
committer | Matthew Hoops | 2011-08-24 09:54:19 -0400 |
commit | 4e849092d23689f7a82f834e51279401b4349893 (patch) | |
tree | b46e5f751ec915ff55776300304308b4ea331c0c /audio/decoders | |
parent | 40fd9ce27c8579f97e8ca5c0917366b1a069c5e9 (diff) | |
download | scummvm-rg350-4e849092d23689f7a82f834e51279401b4349893.tar.gz scummvm-rg350-4e849092d23689f7a82f834e51279401b4349893.tar.bz2 scummvm-rg350-4e849092d23689f7a82f834e51279401b4349893.zip |
AUDIO: Add a DisposeAfterUse parameter to makeXAStream
Diffstat (limited to 'audio/decoders')
-rw-r--r-- | audio/decoders/xa.cpp | 13 | ||||
-rw-r--r-- | audio/decoders/xa.h | 6 |
2 files changed, 13 insertions, 6 deletions
diff --git a/audio/decoders/xa.cpp b/audio/decoders/xa.cpp index 2b8c9b2d99..9871775973 100644 --- a/audio/decoders/xa.cpp +++ b/audio/decoders/xa.cpp @@ -28,7 +28,7 @@ namespace Audio { class XAStream : public Audio::RewindableAudioStream { public: - XAStream(Common::SeekableReadStream *stream, int rate); + XAStream(Common::SeekableReadStream *stream, int rate, DisposeAfterUse::Flag disposeAfterUse); ~XAStream(); bool isStereo() const { return false; } @@ -39,6 +39,7 @@ public: bool rewind(); private: Common::SeekableReadStream *_stream; + DisposeAfterUse::Flag _disposeAfterUse; byte _predictor; double _samples[28]; @@ -47,7 +48,8 @@ private: double _s1, _s2; }; -XAStream::XAStream(Common::SeekableReadStream *stream, int rate) : _stream(stream) { +XAStream::XAStream(Common::SeekableReadStream *stream, int rate, DisposeAfterUse::Flag disposeAfterUse) + : _stream(stream), _disposeAfterUse(disposeAfterUse) { _samplesRemaining = 0; _predictor = 0; _s1 = _s2 = 0.0; @@ -56,7 +58,8 @@ XAStream::XAStream(Common::SeekableReadStream *stream, int rate) : _stream(strea XAStream::~XAStream() { - delete _stream; + if (_disposeAfterUse == DisposeAfterUse::YES) + delete _stream; } static const double s_xaDataTable[5][2] = @@ -140,8 +143,8 @@ bool XAStream::rewind() { return true; } -RewindableAudioStream *makeXAStream(Common::SeekableReadStream *stream, int rate) { - return new XAStream(stream, rate); +RewindableAudioStream *makeXAStream(Common::SeekableReadStream *stream, int rate, DisposeAfterUse::Flag disposeAfterUse) { + return new XAStream(stream, rate, disposeAfterUse); } } // End of namespace Audio diff --git a/audio/decoders/xa.h b/audio/decoders/xa.h index 68c07151da..cf28d8001a 100644 --- a/audio/decoders/xa.h +++ b/audio/decoders/xa.h @@ -31,6 +31,8 @@ #ifndef AUDIO_DECODERS_XA_H #define AUDIO_DECODERS_XA_H +#include "common/types.h" + namespace Common { class SeekableReadStream; } @@ -45,11 +47,13 @@ class RewindableAudioStream; * * @param stream the SeekableReadStream from which to read the XA ADPCM data * @param rate the sampling rate + * @param disposeAfterUse whether to delete the stream after use. * @return a new RewindableAudioStream, or NULL, if an error occurred */ RewindableAudioStream *makeXAStream( Common::SeekableReadStream *stream, - int rate); + int rate, + DisposeAfterUse::Flag disposeAfterUse = DisposeAfterUse::YES); } // End of namespace Audio |