mirror of
https://github.com/ioquake/ioq3.git
synced 2024-11-10 07:11:46 +00:00
Fix OpenAL music stop issues using stream stop code
S_AL_StopBackgroundTrack would sometimes generate AL errors. S_AL_MusicSourceFree needs to kill source or next track may have short looping buffer.
This commit is contained in:
parent
6d5041a960
commit
3d69ae9995
1 changed files with 11 additions and 5 deletions
|
@ -1876,6 +1876,7 @@ static void S_AL_MusicSourceFree( void )
|
|||
{
|
||||
// Release the output musicSource
|
||||
S_AL_SrcUnlock(musicSourceHandle);
|
||||
S_AL_SrcKill(musicSourceHandle);
|
||||
musicSource = 0;
|
||||
musicSourceHandle = -1;
|
||||
}
|
||||
|
@ -1908,17 +1909,22 @@ S_AL_StopBackgroundTrack
|
|||
static
|
||||
void S_AL_StopBackgroundTrack( void )
|
||||
{
|
||||
int numBuffers;
|
||||
|
||||
if(!musicPlaying)
|
||||
return;
|
||||
|
||||
// Stop playing
|
||||
qalSourceStop(musicSource);
|
||||
|
||||
// De-queue the musicBuffers
|
||||
qalSourceUnqueueBuffers(musicSource, NUM_MUSIC_BUFFERS, musicBuffers);
|
||||
|
||||
// Destroy the musicBuffers
|
||||
qalDeleteBuffers(NUM_MUSIC_BUFFERS, musicBuffers);
|
||||
// Un-queue any buffers, and delete them
|
||||
qalGetSourcei( musicSource, AL_BUFFERS_PROCESSED, &numBuffers );
|
||||
while( numBuffers-- )
|
||||
{
|
||||
ALuint buffer;
|
||||
qalSourceUnqueueBuffers(musicSource, 1, &buffer);
|
||||
qalDeleteBuffers(1, &buffer);
|
||||
}
|
||||
|
||||
// Free the musicSource
|
||||
S_AL_MusicSourceFree();
|
||||
|
|
Loading…
Reference in a new issue