diff options
author | Retro-Junk | 2017-01-25 00:05:42 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2017-01-25 22:42:26 +0100 |
commit | 7e4043ec8595cd083c4966cfa001958912071932 (patch) | |
tree | 80f50e28dc71481d74b56f68b38e914f29383fe1 /engines/cryo/sound.cpp | |
parent | 30eb57b4b26efa6222270fd6712996a277ec8698 (diff) | |
download | scummvm-rg350-7e4043ec8595cd083c4966cfa001958912071932.tar.gz scummvm-rg350-7e4043ec8595cd083c4966cfa001958912071932.tar.bz2 scummvm-rg350-7e4043ec8595cd083c4966cfa001958912071932.zip |
CRYO: Fix broken sound in FMV scenes
Diffstat (limited to 'engines/cryo/sound.cpp')
-rw-r--r-- | engines/cryo/sound.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/cryo/sound.cpp b/engines/cryo/sound.cpp index b653e60ec2..1176ccec90 100644 --- a/engines/cryo/sound.cpp +++ b/engines/cryo/sound.cpp @@ -41,12 +41,22 @@ CSoundChannel::~CSoundChannel() { delete _audioStream;
}
-void CSoundChannel::queueBuffer(byte *buffer, unsigned int size, bool playNow, bool playQueue) {
+void CSoundChannel::queueBuffer(byte *buffer, unsigned int size, bool playNow, bool playQueue, bool buffering = true) {
if (playNow)
stop();
+
+ if (!buffer || !size)
+ return;
+
if (!_audioStream)
_audioStream = Audio::makeQueuingAudioStream(_sampleRate, _stereo);
- _audioStream->queueBuffer(buffer, size, DisposeAfterUse::NO, _bufferFlags);
+
+ if (buffering) {
+ byte *localBuffer = (byte*)malloc(size);
+ memcpy(localBuffer, buffer, size);
+ _audioStream->queueBuffer(localBuffer, size, DisposeAfterUse::YES, _bufferFlags);
+ } else
+ _audioStream->queueBuffer(buffer, size, DisposeAfterUse::NO, _bufferFlags);
if (playNow || playQueue)
play();
}
|