aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/sndres.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/saga/sndres.cpp')
-rw-r--r--engines/saga/sndres.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/engines/saga/sndres.cpp b/engines/saga/sndres.cpp
index d9b31dcd35..9f8a155e32 100644
--- a/engines/saga/sndres.cpp
+++ b/engines/saga/sndres.cpp
@@ -103,9 +103,17 @@ SndRes::~SndRes() {
void SndRes::setVoiceBank(int serial) {
if (_voiceSerial == serial) return;
+ // Close previous voice bank file
+ if (_voiceSerial >= 0 && _voiceContext->file->isOpen())
+ _voiceContext->file->close();
+
_voiceSerial = serial;
_voiceContext = _vm->_resource->getContext(GAME_VOICEFILE, _voiceSerial);
+
+ // Open new voice bank file
+ if (!_voiceContext->file->isOpen())
+ _voiceContext->file->open(_voiceContext->fileName);
}
void SndRes::playSound(uint32 resourceId, int volume, bool loop) {