From e85f43877aa4e2e2750c6f2d5cfd3f562d893fe5 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 27 Oct 2010 19:22:37 +0000 Subject: 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 --- engines/sci/console.cpp | 8 +++++--- engines/sci/sci.cpp | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'engines/sci') 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() { -- cgit v1.2.3