--- a/src/aica/audio.c Mon Jul 21 01:01:39 2008 +0000 +++ b/src/aica/audio.c Mon Jul 28 10:10:13 2008 +0000 @@ -116,10 +116,17 @@ ERROR( "Audio driver '%s' not found, aborting.", preferred_driver ); exit(2); } else if( audio_set_driver( audio_driver ) == FALSE ) { - ERROR( "Failed to initialize audio driver '%s', using null driver", - audio_driver->name ); - audio_driver = &audio_null_driver; - audio_set_driver( &audio_null_driver ); + int i; + for( i=0; audio_driver_list[i] != NULL; i++ ) { + if( audio_driver_list[i] != audio_driver && + audio_set_driver( audio_driver_list[i] ) ) { + ERROR( "Failed to initialize audio driver %s, falling back to %s", + audio_driver->name, audio_driver_list[i]->name ); + return audio_driver_list[i]; + } + } + ERROR( "Unable to intialize any audio driver, aborting." ); + exit(2); } return audio_driver; }