aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/saga/music.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp
index 7fe8c0dbb2..52befa3dd3 100644
--- a/engines/saga/music.cpp
+++ b/engines/saga/music.cpp
@@ -305,13 +305,10 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
if (!_digitalMusicContext->isCompressed()) {
byte musicFlags = Audio::Mixer::FLAG_AUTOFREE | Audio::Mixer::FLAG_STEREO |
Audio::Mixer::FLAG_16BITS | Audio::Mixer::FLAG_LITTLE_ENDIAN;
- if (flags == MUSIC_LOOP)
- musicFlags |= Audio::Mixer::FLAG_LOOP;
-
Audio::LinearDiskStreamAudioBlock audioBlocks[1];
audioBlocks[0].pos = 0;
audioBlocks[0].len = resData->size / 2; // 16-bit sound
- audioStream = Audio::makeLinearDiskStream(musicStream, audioBlocks, 1, 11025, musicFlags, false);
+ audioStream = Audio::makeLinearDiskStream(musicStream, audioBlocks, 1, 11025, musicFlags, true);
} else {
// Read compressed header to determine compression type
musicFile->seek((uint32)resData->offset, SEEK_SET);
@@ -319,18 +316,21 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
if (identifier == 0) { // MP3
#ifdef USE_MAD
- audioStream = Audio::makeMP3Stream(musicStream, false);
+ audioStream = Audio::makeMP3Stream(musicStream, true);
#endif
} else if (identifier == 1) { // OGG
#ifdef USE_VORBIS
- audioStream = Audio::makeVorbisStream(musicStream, false);
+ audioStream = Audio::makeVorbisStream(musicStream, true);
#endif
} else if (identifier == 2) { // FLAC
#ifdef USE_FLAC
- audioStream = Audio::makeFlacStream(musicStream, false);
+ audioStream = Audio::makeFlacStream(musicStream, true);
#endif
}
}
+
+ if (!audioStream)
+ delete musicStream;
}
}
}