]> git.mxchange.org Git - simgear.git/blobdiff - simgear/sound/sample_openal.cxx
Oops, ALUT 1.0 requires a little more work than expected.
[simgear.git] / simgear / sound / sample_openal.cxx
index eaa5452afc7f5a73d4e5e6c9e0c84e9ba28fdf53..c182e829c041bc135e53ec970c3b0b12d8ea59ab 100644 (file)
@@ -103,19 +103,33 @@ SGSoundSample::SGSoundSample( const char *path, const char *file,
     }
 
     // Load the sample file
-#if defined (__APPLE__)
+#if defined(ALUT_API_MAJOR_VERSION) && ALUT_API_MAJOR_VERSION >= 1
+
+  buffer = alutCreateBufferFromFile(samplepath.c_str());
+  if (buffer == AL_NONE) {
+     ALenum error = alutGetError ();
+     print_openal_error("constructor (alutCreateBufferFromFile)");
+     throw sg_exception("Failed to load wav file: "+string(alutGetErrorString (error)));
+  }
+
+#else
+        //
+       // pre 1.0 alut version
+        //
+# if defined (__APPLE__)
     alutLoadWAVFile( (ALbyte *)samplepath.c_str(),
                      &format, &data, &size, &freq );
-#else
+# else
     alutLoadWAVFile( (ALbyte *)samplepath.c_str(),
                      &format, &data, &size, &freq, &loop );
-#endif
+# endif
     if ( print_openal_error("constructor (alutLoadWAVFile)") ) {
         throw sg_exception("Failed to load wav file.");
     }
 
     // Copy data to the internal OpenAL buffer
     alBufferData( buffer, format, data, size, freq );
+
     if ( print_openal_error("constructor (alBufferData)") ) {
         throw sg_exception("Failed to buffer data.");
     }
@@ -124,6 +138,7 @@ SGSoundSample::SGSoundSample( const char *path, const char *file,
         alutUnloadWAV( format, data, size, freq );
         data = NULL;
     }
+#endif
 
     print_openal_error("constructor return");
 }