aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/sound/wave_file.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/sound/wave_file.cpp')
-rw-r--r--engines/titanic/sound/wave_file.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/engines/titanic/sound/wave_file.cpp b/engines/titanic/sound/wave_file.cpp
index e6232204e7..66da1160a5 100644
--- a/engines/titanic/sound/wave_file.cpp
+++ b/engines/titanic/sound/wave_file.cpp
@@ -64,7 +64,7 @@ bool AudioBufferStream::endOfData() const {
/*------------------------------------------------------------------------*/
-CWaveFile::CWaveFile() : _audioStream(nullptr),
+CWaveFile::CWaveFile(Audio::Mixer *mixer) : _mixer(mixer), _audioStream(nullptr),
_waveData(nullptr), _waveSize(0), _dataSize(0), _headerSize(0),
_rate(0), _flags(0), _wavType(0), _soundType(Audio::Mixer::kPlainSoundType) {
setup();
@@ -181,9 +181,8 @@ Audio::SeekableAudioStream *CWaveFile::audioStream() {
// No stream yet, so create one and give it control of the raw wave data
assert(_waveData);
_audioStream = Audio::makeWAVStream(
- new Common::MemoryReadStream(_waveData, _waveSize, DisposeAfterUse::YES),
+ new Common::MemoryReadStream(_waveData, _waveSize, DisposeAfterUse::NO),
DisposeAfterUse::YES);
- _waveData = nullptr;
}
return _audioStream;
@@ -194,10 +193,6 @@ uint CWaveFile::getFrequency() {
return audioStream()->getRate();
}
-void CWaveFile::reset() {
- audioStream()->rewind();
-}
-
const int16 *CWaveFile::lock() {
enum { kWaveFormatPCM = 1 };
@@ -220,4 +215,17 @@ void CWaveFile::unlock(const int16 *ptr) {
// No implementation needed in ScummVM
}
-} // End of namespace Titanic z
+Audio::SoundHandle CWaveFile::play(byte volume) {
+ // If there's a previous instance of the sound being played,
+ // stop in and free the old audio stream
+ if (_mixer->isSoundHandleActive(_soundHandle))
+ _mixer->stopHandle(_soundHandle);
+
+ Audio::SeekableAudioStream *stream = audioStream();
+ stream->rewind();
+ _mixer->playStream(_soundType, &_soundHandle, stream, -1,
+ volume, 0, DisposeAfterUse::NO);
+ return _soundHandle;
+}
+
+} // End of namespace Titanic