[Scummvm-git-logs] scummvm master -> 50b5e14a73ed42480f0377c49263e67d56b67916
bluegr
noreply at scummvm.org
Sun Nov 6 12:13:52 UTC 2022
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
47763f7bc1 SCI: (BRAIN) - fix music pause bug
50b5e14a73 SCI: (BRAIN) - remove redundant function
Commit: 47763f7bc15872386dbd0fe9a14c0a59d1ecd7da
https://github.com/scummvm/scummvm/commit/47763f7bc15872386dbd0fe9a14c0a59d1ecd7da
Author: athrxx (athrxx at scummvm.org)
Date: 2022-11-06T14:13:48+02:00
Commit Message:
SCI: (BRAIN) - fix music pause bug
When skipping the intro via 'Esc' and 'Skip' the script
sets up a pause which it won't release later. This brings
our pause counters out of sync and triggers an assert.
This fix should work around this...
Changed paths:
engines/sci/engine/kfile.cpp
engines/sci/sound/music.cpp
engines/sci/sound/music.h
engines/sci/sound/soundcmd.cpp
engines/sci/sound/soundcmd.h
diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index 9c9a934f81e..454c8901dd8 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -1201,8 +1201,11 @@ reg_t kRestoreGame(EngineState *s, int argc, reg_t *argv) {
if (argv[0].isNull()) {
// Direct call, either from launcher or from a patched Game::restore
if (savegameId == -1) {
- // we are supposed to show a dialog for the user and let him choose a saved game
- g_sci->_soundCmd->pauseAll(true); // pause music
+ // We are supposed to show a dialog for the user and let him choose a saved game.
+ // Pause music if necessary. There are script situations where the pause does not
+ // get properly released. In that case we don't add another pause here.
+ if (!g_sci->_soundCmd->isGlobalPauseActive())
+ g_sci->_soundCmd->pauseAll(true);
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
savegameId = dialog->runModalWithCurrentTarget();
delete dialog;
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp
index 9caeb4888d2..ccc554d7211 100644
--- a/engines/sci/sound/music.cpp
+++ b/engines/sci/sound/music.cpp
@@ -316,6 +316,10 @@ void SciMusic::resetGlobalPauseCounter() {
_globalPause = 0;
}
+bool SciMusic::isGlobalPauseActive() const {
+ return (_globalPause > 0);
+}
+
void SciMusic::stopAll() {
const MusicList::iterator end = _playList.end();
for (MusicList::iterator i = _playList.begin(); i != end; ++i) {
diff --git a/engines/sci/sound/music.h b/engines/sci/sound/music.h
index 8abc6321184..c1c60246d25 100644
--- a/engines/sci/sound/music.h
+++ b/engines/sci/sound/music.h
@@ -195,6 +195,7 @@ public:
void pauseAll(bool pause);
bool isAllPaused() const { return (_globalPause > 0); }
void resetGlobalPauseCounter();
+ bool isGlobalPauseActive() const;
void stopAll();
void stopAllSamples();
diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp
index 51a3c6110f3..68efb73ca7e 100644
--- a/engines/sci/sound/soundcmd.cpp
+++ b/engines/sci/sound/soundcmd.cpp
@@ -954,6 +954,10 @@ void SoundCommandParser::resetGlobalPauseCounter() {
_music->resetGlobalPauseCounter();
}
+bool SoundCommandParser::isGlobalPauseActive() const {
+ return _music->isGlobalPauseActive();
+}
+
MusicType SoundCommandParser::getMusicType() const {
assert(_music);
return _music->soundGetMusicType();
diff --git a/engines/sci/sound/soundcmd.h b/engines/sci/sound/soundcmd.h
index d27e625716f..e11de319a3e 100644
--- a/engines/sci/sound/soundcmd.h
+++ b/engines/sci/sound/soundcmd.h
@@ -47,6 +47,7 @@ public:
void setMasterVolume(int vol);
void pauseAll(bool pause);
void resetGlobalPauseCounter();
+ bool isGlobalPauseActive() const;
#ifdef ENABLE_SCI32
void setVolume(const reg_t obj, const int vol);
#endif
Commit: 50b5e14a73ed42480f0377c49263e67d56b67916
https://github.com/scummvm/scummvm/commit/50b5e14a73ed42480f0377c49263e67d56b67916
Author: athrxx (athrxx at scummvm.org)
Date: 2022-11-06T14:13:48+02:00
Commit Message:
SCI: (BRAIN) - remove redundant function
Changed paths:
engines/sci/sound/music.cpp
engines/sci/sound/music.h
engines/sci/sound/soundcmd.cpp
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp
index ccc554d7211..9caeb4888d2 100644
--- a/engines/sci/sound/music.cpp
+++ b/engines/sci/sound/music.cpp
@@ -316,10 +316,6 @@ void SciMusic::resetGlobalPauseCounter() {
_globalPause = 0;
}
-bool SciMusic::isGlobalPauseActive() const {
- return (_globalPause > 0);
-}
-
void SciMusic::stopAll() {
const MusicList::iterator end = _playList.end();
for (MusicList::iterator i = _playList.begin(); i != end; ++i) {
diff --git a/engines/sci/sound/music.h b/engines/sci/sound/music.h
index c1c60246d25..8abc6321184 100644
--- a/engines/sci/sound/music.h
+++ b/engines/sci/sound/music.h
@@ -195,7 +195,6 @@ public:
void pauseAll(bool pause);
bool isAllPaused() const { return (_globalPause > 0); }
void resetGlobalPauseCounter();
- bool isGlobalPauseActive() const;
void stopAll();
void stopAllSamples();
diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp
index 68efb73ca7e..591312a9d34 100644
--- a/engines/sci/sound/soundcmd.cpp
+++ b/engines/sci/sound/soundcmd.cpp
@@ -955,7 +955,7 @@ void SoundCommandParser::resetGlobalPauseCounter() {
}
bool SoundCommandParser::isGlobalPauseActive() const {
- return _music->isGlobalPauseActive();
+ return _music->isAllPaused();
}
MusicType SoundCommandParser::getMusicType() const {
More information about the Scummvm-git-logs
mailing list