[Scummvm-cvs-logs] CVS: scummvm/bs2/driver d_sound.cpp,1.62,1.63 d_sound.h,1.19,1.20
Torbj?rn Andersson
eriktorbjorn at users.sourceforge.net
Sat Sep 27 09:12:05 CEST 2003
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/bs2 function.cpp,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: scummvm/backends/dc audio.cpp,1.7,1.8 dc.h,1.15,1.16 dcmain.cpp,1.16,1.17 time.cpp,1.3,1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/bs2/driver
In directory sc8-pr-cvs1:/tmp/cvs-serv2441/driver
Modified Files:
d_sound.cpp d_sound.h
Log Message:
Save enough information about the currently playing music before the
credits so that it can be properly resumed afterwards.
Index: d_sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/bs2/driver/d_sound.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- d_sound.cpp 26 Sep 2003 14:19:02 -0000 1.62
+++ d_sound.cpp 27 Sep 2003 16:10:42 -0000 1.63
@@ -308,6 +308,62 @@
return RD_OK;
}
+// Save/Restore information about current music so that we can restore it
+// after the credits.
+
+void Sword2Sound::saveMusicState() {
+ StackLock lock(_mutex);
+
+ int saveStream;
+
+ if (music[0]._streaming && !music[0]._fading) {
+ saveStream = 0;
+ } else if (music[1]._streaming && !music[0]._fading) {
+ saveStream = 1;
+ } else {
+ music[2]._streaming = false;
+ return;
+ }
+
+ music[2]._streaming = true;
+ music[2]._fading = 0;
+ music[2]._looping = music[saveStream]._looping;
+ music[2]._fileStart = music[saveStream]._fileStart;
+ music[2]._filePos = music[saveStream]._filePos;
+ music[2]._fileEnd = music[saveStream]._fileEnd;
+ music[2]._lastSample = music[saveStream]._lastSample;
+}
+
+void Sword2Sound::restoreMusicState() {
+ StackLock lock(_mutex);
+
+ int restoreStream;
+
+ if (!music[2]._streaming)
+ return;
+
+ // Fade out any music that happens to be playing
+
+ for (int i = 0; i < MAXMUS; i++) {
+ if (music[i]._streaming && !music[i]._fading)
+ music[i]._fading = FADE_SAMPLES;
+ }
+
+ if (!music[0]._streaming && !music[0]._fading) {
+ restoreStream = 0;
+ } else {
+ restoreStream = 1;
+ }
+
+ music[restoreStream]._streaming = true;
+ music[restoreStream]._fading = 0;
+ music[restoreStream]._looping = music[2]._looping;
+ music[restoreStream]._fileStart = music[2]._fileStart;
+ music[restoreStream]._filePos = music[2]._filePos;
+ music[restoreStream]._fileEnd = music[2]._fileEnd;
+ music[restoreStream]._lastSample = music[2]._lastSample;
+}
+
// --------------------------------------------------------------------------
// This function returns the index of the sound effect with the ID passed in.
// --------------------------------------------------------------------------
Index: d_sound.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/bs2/driver/d_sound.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- d_sound.h 26 Sep 2003 14:19:03 -0000 1.19
+++ d_sound.h 27 Sep 2003 16:10:43 -0000 1.20
@@ -100,6 +100,8 @@
int32 PauseMusic(void);
int32 UnpauseMusic(void);
int32 StreamCompMusic(const char *filename, uint32 musicId, bool looping);
+ void saveMusicState();
+ void restoreMusicState();
int32 MusicTimeRemaining();
int32 ReverseStereo(void);
uint8 GetFxVolume(void);
@@ -129,7 +131,7 @@
RateConverter *_converter;
FxHandle fx[MAXFX];
- MusicHandle music[MAXMUS];
+ MusicHandle music[MAXMUS + 1];
// We used to have two music volumes - one for each channel -
// but they were always set to the same value.
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/bs2 function.cpp,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: scummvm/backends/dc audio.cpp,1.7,1.8 dc.h,1.15,1.16 dcmain.cpp,1.16,1.17 time.cpp,1.3,1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list