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.");
+ throw sg_exception("Failed to load wav file: "+string(alutGetErrorString (error)));
}
#else
SG_LOG( SG_GENERAL, SG_INFO, "Initializing OpenAL sound manager" );
// initialize OpenAL
+#if defined(ALUT_API_MAJOR_VERSION) && ALUT_API_MAJOR_VERSION >= 1
+ if (!alutInit(NULL, NULL))
+ {
+ ALenum error = alutGetError ();
+ SG_LOG( SG_GENERAL, SG_ALERT, "Audio initialization failed!" );
+ SG_LOG( SG_GENERAL, SG_ALERT, " "+string(alutGetErrorString(error)));
+ working = false;
+ }
+ context = alcGetCurrentContext();
+#else
if ( (dev = alcOpenDevice( NULL )) != NULL
&& ( context = alcCreateContext( dev, NULL )) != NULL ) {
working = true;
context = 0;
SG_LOG( SG_GENERAL, SG_ALERT, "Audio initialization failed!" );
}
+#endif
listener_pos[0] = 0.0;
listener_pos[1] = 0.0;
SGSoundMgr::~SGSoundMgr() {
+#if defined(ALUT_API_MAJOR_VERSION) && ALUT_API_MAJOR_VERSION >= 1
+ alutExit ();
+#else
if (context)
alcDestroyContext( context );
+#endif
//
// Remove the samples from the sample manager.
//