X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fsound%2Fsoundmgr_openal.cxx;h=369adede161aa2852d3b544a2882958a730bcfa2;hb=c4b4c0ce59602a0b749e22b29d6ce5db6f654eae;hp=16d9e7948f9c6ca8e08562d17430887ec688a0bd;hpb=9b0ba10b0b7285b6eb7ad3f8992a9e2d0bb8dfc9;p=simgear.git diff --git a/simgear/sound/soundmgr_openal.cxx b/simgear/sound/soundmgr_openal.cxx index 16d9e794..369adede 100644 --- a/simgear/sound/soundmgr_openal.cxx +++ b/simgear/sound/soundmgr_openal.cxx @@ -37,6 +37,7 @@ #include #include +#include #include "soundmgr_openal.hxx" @@ -89,7 +90,7 @@ SGSoundMgr::SGSoundMgr() : } _alut_init++; #else - #error ALUT 1.1 required, ALUT 1.0 is no longer supported, please upgrade + //#error ALUT 1.1 required, ALUT 1.0 is no longer supported, please upgrade #endif } @@ -508,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"); + } } }