diff options
author | Filippos Karapetis | 2010-10-27 19:22:37 +0000 |
---|---|---|
committer | Filippos Karapetis | 2010-10-27 19:22:37 +0000 |
commit | e85f43877aa4e2e2750c6f2d5cfd3f562d893fe5 (patch) | |
tree | ce32171d3e57a6b5cc264d3c25e493c630663f36 | |
parent | 5a336830a00c1371d8307794c7e43fe98e7baa1d (diff) | |
download | scummvm-rg350-e85f43877aa4e2e2750c6f2d5cfd3f562d893fe5.tar.gz scummvm-rg350-e85f43877aa4e2e2750c6f2d5cfd3f562d893fe5.tar.bz2 scummvm-rg350-e85f43877aa4e2e2750c6f2d5cfd3f562d893fe5.zip |
SCI: Proper pausing/resuming of MIDI music in SciEngine::pauseEngineIntern(), Console::preEnter() and Console::postEnter() and added a sanity check in SciEngine::getDebugger()
svn-id: r53886
-rw-r--r-- | engines/sci/console.cpp | 8 | ||||
-rw-r--r-- | engines/sci/sci.cpp | 8 |
2 files changed, 11 insertions, 5 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index 77a7684713..9c06c40121 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -219,14 +219,16 @@ Console::~Console() { } void Console::preEnter() { - if (g_sci && g_sci->_soundCmd) - g_sci->_soundCmd->pauseAll(true); + if (_engine && _engine->_soundCmd) + _engine->_soundCmd->pauseAll(true); + g_system->getMixer()->pauseAll(true); _enterTime = g_system->getMillis(); } void Console::postEnter() { - if (g_sci && g_sci->_soundCmd) + if (_engine && _engine->_soundCmd) g_sci->_soundCmd->pauseAll(false); + g_system->getMixer()->pauseAll(false); if (!_videoFile.empty()) { _engine->_gfxCursor->kernelHide(); diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index 3747e831f2..98ce93d11f 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -633,8 +633,10 @@ void SciEngine::exitGame() { GUI::Debugger *SciEngine::getDebugger() { if (_gamestate) { ExecStack *xs = &(_gamestate->_executionStack.back()); - xs->addr.pc.offset = _debugState.old_pc_offset; - xs->sp = _debugState.old_sp; + if (xs) { + xs->addr.pc.offset = _debugState.old_pc_offset; + xs->sp = _debugState.old_sp; + } } _debugState.runningStep = 0; // Stop multiple execution @@ -706,6 +708,8 @@ int SciEngine::inQfGImportRoom() const { void SciEngine::pauseEngineIntern(bool pause) { _mixer->pauseAll(pause); + if (_soundCmd) + _soundCmd->pauseAll(pause); } void SciEngine::syncSoundSettings() { |