X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fsound%2Fsoundmgr_openal.cxx;h=369adede161aa2852d3b544a2882958a730bcfa2;hb=c4b4c0ce59602a0b749e22b29d6ce5db6f654eae;hp=e372f3cc5fd0551bfb73ddd85fa627ae3f3cb4cc;hpb=d767e6d7eb9056f4b702f91554010fefa51d60a0;p=simgear.git diff --git a/simgear/sound/soundmgr_openal.cxx b/simgear/sound/soundmgr_openal.cxx index e372f3cc..369adede 100644 --- a/simgear/sound/soundmgr_openal.cxx +++ b/simgear/sound/soundmgr_openal.cxx @@ -30,13 +30,14 @@ #endif #if defined( __APPLE__ ) -# include +# include #else # include #endif #include #include +#include #include "soundmgr_openal.hxx" @@ -45,10 +46,17 @@ #include #include +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 // @@ -81,6 +89,8 @@ SGSoundMgr::SGSoundMgr() : } } _alut_init++; +#else + //#error ALUT 1.1 required, ALUT 1.0 is no longer supported, please upgrade #endif } @@ -499,20 +509,23 @@ unsigned int SGSoundMgr::request_buffer(SGSoundSample *sample) 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"); + } } }