Added simon sound bugfix, patch #632518

Added fix for simon sound-related crash, patch #632517

svn-id: r5377
This commit is contained in:
Travis Howell 2002-11-02 10:51:32 +00:00
parent 099bf6caba
commit e03be389de
2 changed files with 13 additions and 3 deletions

View File

@ -99,6 +99,9 @@ bool File::open(const char *filename, const char *directory, int mode, byte encb
return false;
}
if (filename == NULL || *filename == 0)
return false;
clearIOFailed();
if (mode == kFileReadMode) {

View File

@ -143,6 +143,10 @@ SimonState::SimonState(GameDetector *detector, OSystem *syst)
warning("Sound initialization failed. "
"Features of the game that depend on sound synchronization will most likely break");
set_volume(detector->_sfx_volume);
_playing_sound = 0;
_effects_sound = 0;
_voice_sound = 0;
}
SimonState::~SimonState()
@ -4770,7 +4774,8 @@ void SimonState::playVoice(uint voice)
if (_voice_offsets == NULL)
return;
_mixer->stop(_voice_sound);
if (_voice_sound != 0)
_mixer->stop(_voice_sound);
_voice_file->seek(_voice_offsets[voice], SEEK_SET);
#ifdef USE_MAD
@ -4858,7 +4863,8 @@ void SimonState::playSound(uint sound)
VocBlockHeader voc_block_hdr;
uint32 size;
_mixer->stop(_effects_sound);
if (_effects_sound != 0)
_mixer->stop(_effects_sound);
_effects_file->seek(_effects_offsets[sound], SEEK_SET);
@ -4891,7 +4897,8 @@ void SimonState::playSound(uint sound)
byte *p;
_mixer->stop(_playing_sound);
if (_playing_sound != 0)
_mixer->stop(_playing_sound);
/* Check if _sfx_heap is NULL */
if (_sfx_heap == NULL) {