diff options
author | thilo <thilo@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2009-10-13 15:23:17 +0000 |
---|---|---|
committer | thilo <thilo@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2009-10-13 15:23:17 +0000 |
commit | f324fd7ab4639210ad1b2c95a2381c65ebee2e3c (patch) | |
tree | 2f41e02d734b567cd65b3ee502b7933dec0ca3a8 | |
parent | de7e2b40464063898dc68e7fffcf4e0b2366ac04 (diff) | |
download | ioquake3-aero-f324fd7ab4639210ad1b2c95a2381c65ebee2e3c.tar.gz ioquake3-aero-f324fd7ab4639210ad1b2c95a2381c65ebee2e3c.zip |
Improve OpenAL error handling, patch by Ben Millwood. https://bugzilla.icculus.org/show_bug.cgi?id=3776
git-svn-id: svn://svn.icculus.org/quake3/trunk@1663 edf5b092-35ff-0310-97b2-ce42778d08ea
-rw-r--r-- | code/client/snd_openal.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/code/client/snd_openal.c b/code/client/snd_openal.c index 5087b72..45b1398 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 |