From 80609e0816a67443db953bbad174691564e857b0 Mon Sep 17 00:00:00 2001 From: ehofman Date: Tue, 8 Sep 2009 13:50:55 +0000 Subject: [PATCH] Dont execute code in case the soundmanager isn't properly initialized --- simgear/sound/soundmgr_openal.cxx | 28 +++++++++++++++------------- simgear/sound/xmlsound.cxx | 4 ++++ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/simgear/sound/soundmgr_openal.cxx b/simgear/sound/soundmgr_openal.cxx index e53eccac..fb49d247 100644 --- a/simgear/sound/soundmgr_openal.cxx +++ b/simgear/sound/soundmgr_openal.cxx @@ -97,6 +97,7 @@ SGSoundMgr::SGSoundMgr() { SG_LOG( SG_GENERAL, SG_ALERT, " "+string(alutGetErrorString(error))); working = false; context = 0; + return; } else { @@ -111,7 +112,8 @@ SGSoundMgr::SGSoundMgr() { } else { working = false; context = 0; - SG_LOG( SG_GENERAL, SG_ALERT, "Audio initialization failed!" ); + SG_LOG( SG_GENERAL, SG_ALERT, "Audio initialization failed!" ); + return; } #endif @@ -136,7 +138,7 @@ SGSoundMgr::SGSoundMgr() { alListenerfv( AL_ORIENTATION, listener_ori ); alGetError(); if ( alGetError() != AL_NO_ERROR) { - SG_LOG( SG_GENERAL, SG_ALERT, + SG_LOG( SG_GENERAL, SG_ALERT, "Oops AL error after audio initialization!" ); } @@ -190,7 +192,7 @@ SGSoundMgr::pause () if (context) { alcSuspendContext( context ); if ( alGetError() != AL_NO_ERROR) { - SG_LOG( SG_GENERAL, SG_ALERT, + SG_LOG( SG_GENERAL, SG_ALERT, "Oops AL error after soundmgr pause()!" ); } } @@ -203,7 +205,7 @@ SGSoundMgr::resume () if (context) { alcProcessContext( context ); if ( alGetError() != AL_NO_ERROR) { - SG_LOG( SG_GENERAL, SG_ALERT, + SG_LOG( SG_GENERAL, SG_ALERT, "Oops AL error after soundmgr resume()!" ); } } @@ -230,12 +232,12 @@ bool SGSoundMgr::remove( const string &refname ) { sample_map_iterator sample_it = samples.find( refname ); if ( sample_it != samples.end() ) { - // first stop the sound from playing (so we don't bomb the - // audio scheduler) + // first stop the sound from playing (so we don't bomb the + // audio scheduler) samples.erase( sample_it ); // cout << "sndmgr: removed -> " << refname << endl; - return true; + return true; } else { // cout << "sndmgr: failed remove -> " << refname << endl; return false; @@ -247,9 +249,9 @@ bool SGSoundMgr::remove( const string &refname ) { bool SGSoundMgr::exists( const string &refname ) { sample_map_iterator sample_it = samples.find( refname ); if ( sample_it != samples.end() ) { - return true; + return true; } else { - return false; + return false; } } @@ -259,9 +261,9 @@ bool SGSoundMgr::exists( const string &refname ) { SGSoundSample *SGSoundMgr::find( const string &refname ) { sample_map_iterator sample_it = samples.find( refname ); if ( sample_it != samples.end() ) { - return sample_it->second; + return sample_it->second; } else { - return NULL; + return NULL; } } @@ -328,7 +330,7 @@ void SGSoundMgr::set_source_pos_all( ALfloat *pos ) { sample_map_iterator sample_current = samples.begin(); sample_map_iterator sample_end = samples.end(); for ( ; sample_current != sample_end; ++sample_current ) { - SGSoundSample *sample = sample_current->second; + SGSoundSample *sample = sample_current->second; sample->set_source_pos( pos ); } } @@ -344,7 +346,7 @@ void SGSoundMgr::set_source_vel_all( ALfloat *vel ) { sample_map_iterator sample_current = samples.begin(); sample_map_iterator sample_end = samples.end(); for ( ; sample_current != sample_end; ++sample_current ) { - SGSoundSample *sample = sample_current->second; + SGSoundSample *sample = sample_current->second; sample->set_source_vel( vel, listener_vel ); } } diff --git a/simgear/sound/xmlsound.cxx b/simgear/sound/xmlsound.cxx index 2db0fcff..fe24ce69 100644 --- a/simgear/sound/xmlsound.cxx +++ b/simgear/sound/xmlsound.cxx @@ -91,6 +91,10 @@ SGXmlSound::init(SGPropertyNode *root, SGPropertyNode *node, SGSoundMgr *sndmgr, // // set global sound properties // + + if (sndmgr->is_working() == false) { + return; + } _name = node->getStringValue("name", ""); SG_LOG(SG_GENERAL, SG_INFO, "Loading sound information for: " << _name ); -- 2.39.5