#endif
#if defined( __APPLE__ )
-# include <OpenAL/alut.h>
+# include <ALUT/alut.h>
#else
# include <AL/alut.h>
#endif
#include <iostream>
#include <algorithm>
+#include <cstring>
#include "soundmgr_openal.hxx"
#include <simgear/misc/sg_path.hxx>
#include <simgear/math/SGMath.hxx>
+using std::string;
+
extern bool isNaN(float *v);
#define MAX_SOURCES 128
+
+#ifndef ALC_ALL_DEVICES_SPECIFIER
+# define ALC_ALL_DEVICES_SPECIFIER 0x1013
+#endif
+
//
// Sound Manager
//
}
}
_alut_init++;
+#else
+ //#error ALUT 1.1 required, ALUT 1.0 is no longer supported, please upgrade
#endif
}
_vendor = (const char *)alGetString(AL_VENDOR);
_renderer = (const char *)alGetString(AL_RENDERER);
- if ( (_vendor != "OpenAL Community" && _vendor != "Apple Computer Inc.") ||
- (_renderer != "Software" && _renderer != "OpenAL Sample Implementation")
+ if ( (_vendor != "Adalin" && _vendor != "Apple Computer Inc.") &&
+ (_vendor != "OpenAL Community" || (_renderer != "Software" &&
+ _renderer != "OpenAL Sample Implementation"))
)
{
_bad_doppler = true;
void SGSoundMgr::release_buffer(SGSoundSample *sample)
{
- string sample_name = sample->get_sample_name();
- buffer_map_iterator buffer_it = _buffers.find( sample_name );
- if ( buffer_it == _buffers.end() ) {
- // buffer was not found
- return;
- }
+ if ( !sample->is_queue() )
+ {
+ string sample_name = sample->get_sample_name();
+ buffer_map_iterator buffer_it = _buffers.find( sample_name );
+ if ( buffer_it == _buffers.end() ) {
+ // buffer was not found
+ return;
+ }
- sample->no_valid_buffer();
- buffer_it->second.refctr--;
- if (buffer_it->second.refctr == 0) {
- ALuint buffer = buffer_it->second.id;
- alDeleteBuffers(1, &buffer);
- _buffers.erase( buffer_it );
- testForALError("release buffer");
+ sample->no_valid_buffer();
+ buffer_it->second.refctr--;
+ if (buffer_it->second.refctr == 0) {
+ ALuint buffer = buffer_it->second.id;
+ alDeleteBuffers(1, &buffer);
+ _buffers.erase( buffer_it );
+ testForALError("release buffer");
+ }
}
}