diff options
Diffstat (limited to 'code/client')
| -rw-r--r-- | code/client/snd_openal.c | 23 | 
1 files changed, 10 insertions, 13 deletions
| diff --git a/code/client/snd_openal.c b/code/client/snd_openal.c index 1cbd714..ad1baa5 100644 --- a/code/client/snd_openal.c +++ b/code/client/snd_openal.c @@ -1369,6 +1369,9 @@ void S_AL_MusicProcess(ALuint b)  	int l;  	ALuint format; +	if(!mus_stream) +		return; +  	l = S_CodecReadStream(mus_stream, MUSIC_BUFFER_SIZE, decode_buffer);  	// Run out data to read, start at the beginning again @@ -1443,6 +1446,13 @@ void S_AL_StartBackgroundTrack( const char *intro, const char *loop )  	if(musicSourceHandle == -1)  		return; +	mus_stream = S_CodecOpenStream(s_backgroundLoop); +	if(!mus_stream) +	{ +		S_AL_MusicSourceFree(); +		return; +	} +  	// Generate the musicBuffers  	qalGenBuffers(NUM_MUSIC_BUFFERS, musicBuffers); @@ -1450,19 +1460,6 @@ void S_AL_StartBackgroundTrack( const char *intro, const char *loop )  	for(i = 0; i < NUM_MUSIC_BUFFERS; i++)  	{  		S_AL_MusicProcess(musicBuffers[i]); - -		// check whether our stream still exists. -		if(!mus_stream) -		{ -			// there was an error in reading which resulted in a -			// closed stream. We must bail out or we'll crash. - -			// deallocate everything we allocated so far: -			qalDeleteBuffers(NUM_MUSIC_BUFFERS, musicBuffers); -			S_AL_MusicSourceFree(); - -			return; -		}  	}  	qalSourceQueueBuffers(musicSource, NUM_MUSIC_BUFFERS, musicBuffers); | 
