diff options
author | Einar Johan Trøan Sømåen | 2014-10-04 20:34:16 +0200 |
---|---|---|
committer | Einar Johan Trøan Sømåen | 2014-10-04 20:34:16 +0200 |
commit | 2f4f7d480e740c0f10816011f8e9876f29f875fd (patch) | |
tree | b55098db1a4fdd3d74a05afe450ea203f9fb911d | |
parent | 4c9f0af320bd619ab0d3fac5353a9be7e0ab64fc (diff) | |
parent | 64695b56245e786b46d351c52572595adf3a310c (diff) | |
download | scummvm-rg350-2f4f7d480e740c0f10816011f8e9876f29f875fd.tar.gz scummvm-rg350-2f4f7d480e740c0f10816011f8e9876f29f875fd.tar.bz2 scummvm-rg350-2f4f7d480e740c0f10816011f8e9876f29f875fd.zip |
Merge pull request #514 from tobiatesan/fix_audio_loop
WINTERMUTE: Use SubLoopingAudio for music w/arbitrary loop points
-rw-r--r-- | engines/wintermute/base/sound/base_sound_buffer.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/engines/wintermute/base/sound/base_sound_buffer.cpp b/engines/wintermute/base/sound/base_sound_buffer.cpp index 09b82ca26c..5fdac12cef 100644 --- a/engines/wintermute/base/sound/base_sound_buffer.cpp +++ b/engines/wintermute/base/sound/base_sound_buffer.cpp @@ -143,8 +143,13 @@ bool BaseSoundBuffer::play(bool looping, uint32 startSample) { _stream->seek(startSample); _handle = new Audio::SoundHandle; if (_looping) { - Audio::AudioStream *loopStream = new Audio::LoopingAudioStream(_stream, 0, DisposeAfterUse::NO); - g_system->getMixer()->playStream(_type, _handle, loopStream, -1, _volume, _pan, DisposeAfterUse::YES); + if (_loopStart != 0) { + Audio::AudioStream *loopStream = new Audio::SubLoopingAudioStream(_stream, 0, Audio::Timestamp(_loopStart, _stream->getRate()), _stream->getLength(), DisposeAfterUse::NO); + g_system->getMixer()->playStream(_type, _handle, loopStream, -1, _volume, _pan, DisposeAfterUse::YES); + } else { + Audio::AudioStream *loopStream = new Audio::LoopingAudioStream(_stream, 0, DisposeAfterUse::NO); + g_system->getMixer()->playStream(_type, _handle, loopStream, -1, _volume, _pan, DisposeAfterUse::YES); + } } else { g_system->getMixer()->playStream(_type, _handle, _stream, -1, _volume, _pan, DisposeAfterUse::NO); } |