diff --git a/code/client/snd_openal.c b/code/client/snd_openal.c index 5087b726..45b13981 100644 --- a/code/client/snd_openal.c +++ b/code/client/snd_openal.c @@ -98,6 +98,22 @@ static const char *S_AL_ErrorMsg(ALenum error) } } +/* +================= +S_AL_ClearError +================= +*/ +static void S_AL_ClearError( qboolean quiet ) +{ + int error = qalGetError(); + + if( quiet ) + return; + if(error != AL_NO_ERROR) + Com_Printf(S_COLOR_YELLOW "WARNING: unhandled AL error: %s\n", + S_AL_ErrorMsg(error)); +} + //=========================================================================== @@ -217,7 +233,8 @@ static void S_AL_BufferUnload(sfxHandle_t sfx) if(!knownSfx[sfx].inMemory) return; - // Delete it + // Delete it + S_AL_ClearError( qfalse ); qalDeleteBuffers(1, &knownSfx[sfx].buffer); if((error = qalGetError()) != AL_NO_ERROR) Com_Printf( S_COLOR_RED "ERROR: Can't delete sound buffer for %s\n", @@ -296,6 +313,7 @@ static void S_AL_BufferLoad(sfxHandle_t sfx) format = S_AL_Format(info.width, info.channels); // Create a buffer + S_AL_ClearError( qfalse ); qalGenBuffers(1, &knownSfx[sfx].buffer); if((error = qalGetError()) != AL_NO_ERROR) { @@ -613,7 +631,8 @@ qboolean S_AL_SrcInit( void ) limit = MAX_SRC; else if(limit < 16) limit = 16; - + + S_AL_ClearError( qfalse ); // Allocate as many sources as possible for(i = 0; i < limit; i++) { @@ -1536,6 +1555,8 @@ void S_AL_MusicProcess(ALuint b) ALuint format; snd_stream_t *curstream; + S_AL_ClearError( qfalse ); + if(intro_stream) curstream = intro_stream; else