[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