When saving the music state, remember the name of the music file that was

open so that it can be re-opened afterwards. It's not so much that it may
have changed, but it may have been closed.

This should fix a crash when escaping the credits.

svn-id: r12055
This commit is contained in:
Torbjörn Andersson 2003-12-31 14:05:53 +00:00
parent cde55eb4fa
commit c85301b2a9
2 changed files with 16 additions and 0 deletions

View File

@ -196,6 +196,11 @@ void Sound::saveMusicState() {
_music[2]._filePos = _music[saveStream]._filePos;
_music[2]._fileEnd = _music[saveStream]._fileEnd;
_music[2]._lastSample = _music[saveStream]._lastSample;
if (fpMus.isOpen())
savedMusicFilename = strdup(fpMus.name());
else
savedMusicFilename = NULL;
}
void Sound::restoreMusicState() {
@ -226,6 +231,15 @@ void Sound::restoreMusicState() {
_music[restoreStream]._filePos = _music[2]._filePos;
_music[restoreStream]._fileEnd = _music[2]._fileEnd;
_music[restoreStream]._lastSample = _music[2]._lastSample;
if (savedMusicFilename) {
if (fpMus.isOpen())
fpMus.close();
fpMus.open(savedMusicFilename);
free(savedMusicFilename);
savedMusicFilename = NULL;
}
}
void Sound::playLeadOut(uint8 *leadOut) {

View File

@ -109,6 +109,8 @@ private:
void updateCompSampleStreaming(int16 *data, uint len);
char *savedMusicFilename;
public:
Sound(Sword2Engine *vm);
~Sound();