aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/console.cpp8
-rw-r--r--engines/sci/sci.cpp8
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() {