aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2010-10-27 19:22:37 +0000
committerFilippos Karapetis2010-10-27 19:22:37 +0000
commite85f43877aa4e2e2750c6f2d5cfd3f562d893fe5 (patch)
treece32171d3e57a6b5cc264d3c25e493c630663f36
parent5a336830a00c1371d8307794c7e43fe98e7baa1d (diff)
downloadscummvm-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.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() {