فهرست منبع

openal: fix warning spam every frame in newer AL implementations

This fixes error messages being generated of the form:
AL lib: (WW) alSetError: Error generated on context 0x801cf8800, code 0xa003

This is caused by alSourceUnqueueBuffers being called without first checking whether processed buffers are available using alGetSourcei.

Fixes #180
rdb 8 سال پیش
والد
کامیت
5980b0b9ab
1فایلهای تغییر یافته به همراه5 افزوده شده و 1 حذف شده
  1. 5 1
      panda/src/audiotraits/openalAudioSound.cxx

+ 5 - 1
panda/src/audiotraits/openalAudioSound.cxx

@@ -435,7 +435,11 @@ pull_used_buffers() {
   ReMutexHolder holder(OpenALAudioManager::_lock);
   ReMutexHolder holder(OpenALAudioManager::_lock);
   while (_stream_queued.size()) {
   while (_stream_queued.size()) {
     ALuint buffer = 0;
     ALuint buffer = 0;
-    alGetError();
+    ALint num_buffers = 0;
+    alGetSourcei(_source, AL_BUFFERS_PROCESSED, &num_buffers);
+    if (num_buffers <= 0) {
+      break;
+    }
     alSourceUnqueueBuffers(_source, 1, &buffer);
     alSourceUnqueueBuffers(_source, 1, &buffer);
     int err = alGetError();
     int err = alGetError();
     if (err == AL_NO_ERROR) {
     if (err == AL_NO_ERROR) {