diff options
-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() { |