Fixed bug #728 SDL-1.2
authorSam Lantinga <slouken@libsdl.org>
Thu, 15 Oct 2009 02:52:11 +0000
branchSDL-1.2
changeset 4337 4eb6b4be1dbc
parent 4336 77b20871fd44
child 4338 d78e4e0bf553
Fixed bug #728 I am using a headset on my monitor as primary sound output device. From time to time it happens that I switch off my monitor when I leave my computer and switch it on when I come back. When doing so while wesnoth is running I get no sound back when I switch on my monitor. There is probably good reason for that. Therefore I wanted to exit and restart wesnoth. Unfortunately, wesnoth always hangs in this situation. It looks like wesnoth can not be exited when the primary sound device vanished. I created a backtrace of this situation (please see attachment).
src/audio/alsa/SDL_alsa_audio.c
--- a/src/audio/alsa/SDL_alsa_audio.c	Wed Oct 14 07:34:35 2009 +0000
+++ b/src/audio/alsa/SDL_alsa_audio.c	Thu Oct 15 02:52:11 2009 +0000
@@ -323,7 +323,7 @@
 
 	frames_left = ((snd_pcm_uframes_t) this->spec.samples);
 
-	while ( frames_left > 0 ) {
+	while ( frames_left > 0 && this->enabled ) {
 		status = SDL_NAME(snd_pcm_writei)(pcm_handle, sample_buf, frames_left);
 		if ( status < 0 ) {
 			if ( status == -EAGAIN ) {