diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/sound/music.cpp | 7 | ||||
-rw-r--r-- | engines/sci/sound/soundcmd.cpp | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp index a623c0b4d2..2b203af93e 100644 --- a/engines/sci/sound/music.cpp +++ b/engines/sci/sound/music.cpp @@ -387,7 +387,12 @@ void SciMusic::soundResume(MusicEntry *pSnd) { return; if (pSnd->status != kSoundPaused) return; - soundPlay(pSnd); + if (pSnd->pStreamAud) { + _pMixer->pauseHandle(pSnd->hCurrentAud, false); + pSnd->status = kSoundPlaying; + } else { + soundPlay(pSnd); + } } void SciMusic::soundToggle(MusicEntry *pSnd, bool pause) { diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp index 40e3637372..45d9302354 100644 --- a/engines/sci/sound/soundcmd.cpp +++ b/engines/sci/sound/soundcmd.cpp @@ -828,7 +828,7 @@ void SoundCommandParser::cmdUpdateCues(reg_t obj, int16 value) { musicSlot->loop -= currentLoopCounter - musicSlot->sampleLoopCounter; musicSlot->sampleLoopCounter = currentLoopCounter; } - if (!_music->soundIsActive(musicSlot)) { + if ((!_music->soundIsActive(musicSlot)) && (musicSlot->status != kSoundPaused)) { processStopSound(obj, 0, true); } else { _music->updateAudioStreamTicker(musicSlot); |