]> git.mxchange.org Git - simgear.git/blobdiff - simgear/sound/soundmgr_openal.cxx
Dont execute code in case the soundmanager isn't properly initialized
[simgear.git] / simgear / sound / soundmgr_openal.cxx
index 9d47c19affb8bf3bdcd97820bc9368e555c14460..fb49d247f984d074b5d3406d0e4d34e5c9a3ec68 100644 (file)
@@ -63,7 +63,12 @@ extern "C" int isinf (double);
 #  endif
 #endif
 
-#include STL_IOSTREAM
+#if defined (__CYGWIN__)
+#include <ieeefp.h>
+#endif
+
+
+#include <iostream>
 
 #include <simgear/debug/logstream.hxx>
 #include <simgear/misc/sg_path.hxx>
@@ -91,8 +96,14 @@ SGSoundMgr::SGSoundMgr() {
         SG_LOG( SG_GENERAL, SG_ALERT, "Audio initialization failed!" );
         SG_LOG( SG_GENERAL, SG_ALERT, "   "+string(alutGetErrorString(error)));
         working = false;
+        context = 0;
+        return;
+    }
+    else
+    {
+        working = true;
+        context = alcGetCurrentContext();
     }
-    context = alcGetCurrentContext();
 #else
     if ( (dev = alcOpenDevice( NULL )) != NULL
             && ( context = alcCreateContext( dev, NULL )) != NULL ) {
@@ -101,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
 
@@ -126,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!" );
     }
 
@@ -180,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()!" );
         }
     }
@@ -193,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()!" );
         }
     }
@@ -220,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;
@@ -237,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;
     }
 }
 
@@ -249,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;
     }
 }
 
@@ -318,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 );
     }
 }
@@ -334,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;
-        sample->set_source_vel( vel );
+        SGSoundSample *sample = sample_current->second;
+        sample->set_source_vel( vel, listener_vel );
     }
 }