[Scummvm-cvs-logs] CVS: scummvm/sword1 music.cpp,1.24,1.25

Torbj?rn Andersson eriktorbjorn at users.sourceforge.net
Sat Mar 13 04:14:00 CET 2004


Update of /cvsroot/scummvm/scummvm/sword1
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1737

Modified Files:
	music.cpp 
Log Message:
When both music channels are used, and a third piece of music starts,
silence the channel that appears to be closest to silence already. This is
the same method I used in BS2, and it might fix a glitch I heard at the
Club Alamut.


Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/music.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- music.cpp	28 Feb 2004 12:58:13 -0000	1.24
+++ music.cpp	13 Mar 2004 12:04:18 -0000	1.25
@@ -154,12 +154,27 @@
 	if (strlen(_tuneList[tuneId]) > 0) {
 		int newStream = 0;
 		if (_handles[0].streaming() && _handles[1].streaming()) {
-			// If both handles are playing, stop the one that's
-			// fading down.
-			if (_handles[0].fading() > 0)
-				_handles[0].stop();
-			else
-				_handles[1].stop();
+			int streamToStop;
+			// Both streams playing - one must be forced to stop.
+			if (!_handles[0].fading() && !_handles[1].fading()) {
+				// None of them are fading. Shouldn't happen,
+				// so it doesn't matter which one we pick.
+				streamToStop = 0;
+			} else if (_handles[0].fading() && !_handles[1].fading()) {
+				// Stream 0 is fading, so pick that one.
+				streamToStop = 0;
+			} else if (!_handles[0].fading() && _handles[1].fading()) {
+				// Stream 1 is fading, so pick that one.
+				streamToStop = 1;
+			} else {
+				// Both streams are fading. Pick the one that
+				// is closest to silent.
+				if (ABS(_handles[0].fading()) < ABS(_handles[1].fading()))
+					streamToStop = 0;
+				else
+					streamToStop = 1;
+			}
+			_handles[streamToStop].stop();
 		}
 		if (_handles[0].streaming()) {
 			_handles[0].fadeDown();





More information about the Scummvm-git-logs mailing list