]> git.mxchange.org Git - simgear.git/blobdiff - simgear/sound/soundmgr_openal.cxx
Make SGPath cache stat() information, cheers Fred
[simgear.git] / simgear / sound / soundmgr_openal.cxx
index 16d9e7948f9c6ca8e08562d17430887ec688a0bd..369adede161aa2852d3b544a2882958a730bcfa2 100644 (file)
@@ -37,6 +37,7 @@
 
 #include <iostream>
 #include <algorithm>
+#include <cstring>
 
 #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");
+        }
     }
 }