aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjörn Andersson2004-01-04 16:19:15 +0000
committerTorbjörn Andersson2004-01-04 16:19:15 +0000
commit92561301ac3886fc75f8fc287b4878f98733d9eb (patch)
tree3abca58436f3710e1bd3908044e8688cdd72f2fd
parent1e6512d2d2729414cbfaecfd33fbf1a38c31c5e1 (diff)
downloadscummvm-rg350-92561301ac3886fc75f8fc287b4878f98733d9eb.tar.gz
scummvm-rg350-92561301ac3886fc75f8fc287b4878f98733d9eb.tar.bz2
scummvm-rg350-92561301ac3886fc75f8fc287b4878f98733d9eb.zip
Deal gracefully with missing music files.
svn-id: r12144
-rw-r--r--sword1/music.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/sword1/music.cpp b/sword1/music.cpp
index 8b94b9ab69..5cdc83a31c 100644
--- a/sword1/music.cpp
+++ b/sword1/music.cpp
@@ -90,8 +90,10 @@ bool SwordMusicHandle::play(const char *filename, bool loop) {
uint8 wavHeader[WAVEHEADERSIZE];
stop();
_file.open(filename);
- if (!_file.isOpen())
+ if (!_file.isOpen()) {
+ warning("Music file %s could not be opened", filename);
return false;
+ }
_file.read(wavHeader, WAVEHEADERSIZE);
_stereo = (READ_LE_UINT16(wavHeader + 0x16) == 2);
_rate = READ_LE_UINT16(wavHeader + 0x18);
@@ -159,9 +161,10 @@ void SwordMusic::startMusic(int32 tuneId, int32 loopFlag) {
}
char fName[20];
sprintf(fName, "music/%s.wav", _tuneList[tuneId]);
- _handles[newStream].play(fName, loopFlag != 0);
- delete _converter[newStream];
- _converter[newStream] = makeRateConverter(_handles[newStream].getRate(), _mixer->getOutputRate(), _handles[newStream].isStereo(), false);
+ if (_handles[newStream].play(fName, loopFlag != 0)) {
+ delete _converter[newStream];
+ _converter[newStream] = makeRateConverter(_handles[newStream].getRate(), _mixer->getOutputRate(), _handles[newStream].isStereo(), false);
+ }
} else {
if (_handles[0].streaming())
_handles[0].fadeDown();