[Scummvm-cvs-logs] CVS: scummvm/sword2/driver d_sound.cpp,1.102,1.103

Torbj?rn Andersson eriktorbjorn at users.sourceforge.net
Wed Jan 14 10:34:00 CET 2004


Update of /cvsroot/scummvm/scummvm/sword2/driver
In directory sc8-pr-cvs1:/tmp/cvs-serv2749

Modified Files:
	d_sound.cpp 
Log Message:
I accidentally introduced a bug when I changed the fading that would cause
fading-up music to distort and eventually deteriorate into white noise.

This was because I allowed _fade to be set on channels that weren't playing
and because I only checked _fade for equality when deciding when to stop
the fading. It should work much better now, I think.


Index: d_sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/driver/d_sound.cpp,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -d -r1.102 -r1.103
--- d_sound.cpp	14 Jan 2004 08:06:56 -0000	1.102
+++ d_sound.cpp	14 Jan 2004 18:33:30 -0000	1.103
@@ -131,17 +131,21 @@
 };
 
 void MusicHandle::fadeDown(void) {
-	if (_fading < 0)
-		_fading = -_fading;
-	else if (_fading == 0)
-		_fading = FADE_SAMPLES;
+	if (_streaming) {
+		if (_fading < 0)
+			_fading = -_fading;
+		else if (_fading == 0)
+			_fading = FADE_SAMPLES;
+	}
 }
 
 void MusicHandle::fadeUp(void) {
-	if (_fading > 0)
-		_fading = -_fading;
-	else if (_fading == 0)
-		_fading = -1;
+	if (_streaming) {
+		if (_fading > 0)
+			_fading = -_fading;
+		else if (_fading == 0)
+			_fading = -1;
+	}
 }
 
 int32 MusicHandle::play(const char *filename, uint32 musicId, bool looping) {
@@ -223,7 +227,7 @@
 			} else if (_fading < 0) {
 				_fading--;
 				out = -(out * _fading) / FADE_SAMPLES;
-				if (_fading == -FADE_SAMPLES)
+				if (_fading <= -FADE_SAMPLES)
 					_fading = 0;
 			}
 		}
@@ -353,10 +357,8 @@
 
 	// Fade out any music that happens to be playing
 
-	for (int i = 0; i < MAXMUS; i++) {
-		if (_music[i]._streaming)
-			_music[i].fadeDown();
-	}
+	for (int i = 0; i < MAXMUS; i++)
+		_music[i].fadeDown();
 
 	if (!_music[2]._streaming)
 		return;





More information about the Scummvm-git-logs mailing list