Commit edb47734 authored by Ryan C. Gordon's avatar Ryan C. Gordon

Removed test for "driver is valid, but doesn't see any audio devices."

It was causing problems, and it really doesn't make sense to do it that way.

  Fixes Bugzilla #834.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404455
parent 3ec28279
...@@ -581,8 +581,6 @@ SDL_AudioInit(const char *driver_name) ...@@ -581,8 +581,6 @@ SDL_AudioInit(const char *driver_name)
int i = 0; int i = 0;
int initialized = 0; int initialized = 0;
int tried_to_init = 0; int tried_to_init = 0;
int rc = 0;
int best_choice = -1;
if (SDL_WasInit(SDL_INIT_AUDIO)) { if (SDL_WasInit(SDL_INIT_AUDIO)) {
SDL_AudioQuit(); /* shutdown driver if already running. */ SDL_AudioQuit(); /* shutdown driver if already running. */
...@@ -608,34 +606,14 @@ SDL_AudioInit(const char *driver_name) ...@@ -608,34 +606,14 @@ SDL_AudioInit(const char *driver_name)
SDL_memset(&current_audio, 0, sizeof(current_audio)); SDL_memset(&current_audio, 0, sizeof(current_audio));
current_audio.name = backend->name; current_audio.name = backend->name;
current_audio.desc = backend->desc; current_audio.desc = backend->desc;
rc = backend->init(&current_audio.impl); initialized = backend->init(&current_audio.impl);
if (rc == 2) { /* init'd, and devices available. Take it! */
initialized = 1;
best_choice = i;
} else if (rc == 1) { /* init'd, but can't see any devices. */
if (current_audio.impl.Deinitialize) {
current_audio.impl.Deinitialize();
}
if (best_choice == -1) {
best_choice = i;
}
}
}
/* No definite choice. Pick one that works but can't promise a device. */
if ((!initialized) && (best_choice != -1)) {
const AudioBootStrap *backend = bootstrap[best_choice];
SDL_memset(&current_audio, 0, sizeof(current_audio));
current_audio.name = backend->name;
current_audio.desc = backend->desc;
initialized = (backend->init(&current_audio.impl) > 0);
} }
if (!initialized) { if (!initialized) {
/* specific drivers will set the error message if they fail... */ /* specific drivers will set the error message if they fail... */
if (!tried_to_init) { if (!tried_to_init) {
if (driver_name) { if (driver_name) {
SDL_SetError("%s not available", driver_name); SDL_SetError("Audio target '%s' not available", driver_name);
} else { } else {
SDL_SetError("No available audio device"); SDL_SetError("No available audio device");
} }
......
...@@ -681,7 +681,7 @@ ALSA_Init(SDL_AudioDriverImpl * impl) ...@@ -681,7 +681,7 @@ ALSA_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = ALSA_Deinitialize; impl->Deinitialize = ALSA_Deinitialize;
impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: Add device enum! */ impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: Add device enum! */
return 1; /* !!! FIXME: return 2 once device enum is implemented. */ return 1; /* this audio target is available. */
} }
......
...@@ -368,7 +368,7 @@ ARTS_Init(SDL_AudioDriverImpl * impl) ...@@ -368,7 +368,7 @@ ARTS_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = ARTS_Deinitialize; impl->Deinitialize = ARTS_Deinitialize;
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
return 1; return 1; /* this audio target is available. */
} }
......
...@@ -204,7 +204,7 @@ BEOSAUDIO_Init(SDL_AudioDriverImpl * impl) ...@@ -204,7 +204,7 @@ BEOSAUDIO_Init(SDL_AudioDriverImpl * impl)
impl->ProvidesOwnCallbackThread = 1; impl->ProvidesOwnCallbackThread = 1;
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
return 1; return 1; /* this audio target is available. */
} }
extern "C" extern "C"
......
...@@ -444,7 +444,8 @@ BSDAUDIO_Init(SDL_AudioDriverImpl * impl) ...@@ -444,7 +444,8 @@ BSDAUDIO_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = BSDAUDIO_Deinitialize; impl->Deinitialize = BSDAUDIO_Deinitialize;
build_device_lists(); build_device_lists();
return (outputDeviceCount > 0) ? 2 : 1;
return 1; /* this audio target is available. */
} }
......
...@@ -158,7 +158,7 @@ DISKAUD_Init(SDL_AudioDriverImpl * impl) ...@@ -158,7 +158,7 @@ DISKAUD_Init(SDL_AudioDriverImpl * impl)
impl->GetDeviceBuf = DISKAUD_GetDeviceBuf; impl->GetDeviceBuf = DISKAUD_GetDeviceBuf;
impl->CloseDevice = DISKAUD_CloseDevice; impl->CloseDevice = DISKAUD_CloseDevice;
return 1; return 1; /* this audio target is available. */
} }
AudioBootStrap DISKAUD_bootstrap = { AudioBootStrap DISKAUD_bootstrap = {
......
...@@ -524,7 +524,8 @@ DMA_Init(SDL_AudioDriverImpl * impl) ...@@ -524,7 +524,8 @@ DMA_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = DMA_Deinitialize; impl->Deinitialize = DMA_Deinitialize;
build_device_lists(); build_device_lists();
return (outputDeviceCount > 0) ? 2 : 1;
return 1; /* this audio target is available. */
} }
AudioBootStrap DMA_bootstrap = { AudioBootStrap DMA_bootstrap = {
......
...@@ -228,7 +228,7 @@ IRIXAUDIO_Init(SDL_AudioDriverImpl * impl) ...@@ -228,7 +228,7 @@ IRIXAUDIO_Init(SDL_AudioDriverImpl * impl)
impl->CloseDevice = DSP_CloseDevice; impl->CloseDevice = DSP_CloseDevice;
impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: not true, I think. */ impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: not true, I think. */
return 1; return 1; /* this audio target is available. */
} }
AudioBootStrap IRIXAUDIO_bootstrap = { AudioBootStrap IRIXAUDIO_bootstrap = {
......
...@@ -381,7 +381,8 @@ DSP_Init(SDL_AudioDriverImpl * impl) ...@@ -381,7 +381,8 @@ DSP_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = DSP_Deinitialize; impl->Deinitialize = DSP_Deinitialize;
build_device_lists(); build_device_lists();
return (outputDeviceCount > 0) ? 2 : 1;
return 1; /* this audio target is available. */
} }
......
...@@ -41,7 +41,7 @@ DUMMYAUD_Init(SDL_AudioDriverImpl * impl) ...@@ -41,7 +41,7 @@ DUMMYAUD_Init(SDL_AudioDriverImpl * impl)
/* Set the function pointers */ /* Set the function pointers */
impl->OpenDevice = DUMMYAUD_OpenDevice; impl->OpenDevice = DUMMYAUD_OpenDevice;
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
return 1; return 1; /* this audio target is available. */
} }
AudioBootStrap DUMMYAUD_bootstrap = { AudioBootStrap DUMMYAUD_bootstrap = {
......
...@@ -341,7 +341,7 @@ ESD_Init(SDL_AudioDriverImpl * impl) ...@@ -341,7 +341,7 @@ ESD_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = ESD_Deinitialize; impl->Deinitialize = ESD_Deinitialize;
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
return 2; /* return 2 (definitely have a "device"). */ return 1; /* this audio target is available. */
} }
......
...@@ -340,7 +340,7 @@ SDL_FS_Init(SDL_AudioDriverImpl * impl) ...@@ -340,7 +340,7 @@ SDL_FS_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = SDL_FS_Deinitialize; impl->Deinitialize = SDL_FS_Deinitialize;
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
return 1; return 1; /* this audio target is available. */
} }
......
...@@ -329,7 +329,7 @@ COREAUDIO_Init(SDL_AudioDriverImpl * impl) ...@@ -329,7 +329,7 @@ COREAUDIO_Init(SDL_AudioDriverImpl * impl)
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
impl->HasCaptureSupport = 0; /* still needs to be written */ impl->HasCaptureSupport = 0; /* still needs to be written */
return 2; /* defitely have an audio device. */ return 1; /* this audio target is available. */
} }
AudioBootStrap COREAUDIOIPHONE_bootstrap = { AudioBootStrap COREAUDIOIPHONE_bootstrap = {
......
...@@ -574,7 +574,7 @@ COREAUDIO_Init(SDL_AudioDriverImpl * impl) ...@@ -574,7 +574,7 @@ COREAUDIO_Init(SDL_AudioDriverImpl * impl)
build_device_lists(); /* do an initial check for devices... */ build_device_lists(); /* do an initial check for devices... */
return (outputDeviceCount > 0) ? 2 : 1; return 1; /* this audio target is available. */
} }
AudioBootStrap COREAUDIO_bootstrap = { AudioBootStrap COREAUDIO_bootstrap = {
......
...@@ -249,7 +249,7 @@ MME_Init(SDL_AudioDriverImpl * impl) ...@@ -249,7 +249,7 @@ MME_Init(SDL_AudioDriverImpl * impl)
impl->CloseDevice = MME_CloseDevice; impl->CloseDevice = MME_CloseDevice;
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
return 1; return 1; /* this audio target is available. */
} }
/* !!! FIXME: Windows "windib" driver is called waveout, too */ /* !!! FIXME: Windows "windib" driver is called waveout, too */
......
...@@ -398,7 +398,7 @@ NAS_Init(SDL_AudioDriverImpl * impl) ...@@ -398,7 +398,7 @@ NAS_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = NAS_Deinitialize; impl->Deinitialize = NAS_Deinitialize;
impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: is this true? */ impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: is this true? */
return 2; /* 2 == definitely has an audio device. */ return 1; /* this audio target is available. */
} }
AudioBootStrap NAS_bootstrap = { AudioBootStrap NAS_bootstrap = {
......
...@@ -120,7 +120,7 @@ NDSAUD_Init(SDL_AudioDriverImpl * impl) ...@@ -120,7 +120,7 @@ NDSAUD_Init(SDL_AudioDriverImpl * impl)
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
impl->OnlyHasDefaultInputDevice = 1; impl->OnlyHasDefaultInputDevice = 1;
return 2; /* 2 == definitely has an audio device. */ return 1; /* this audio target is available. */
} }
AudioBootStrap NDSAUD_bootstrap = { AudioBootStrap NDSAUD_bootstrap = {
......
...@@ -544,8 +544,7 @@ PAUDIO_Init(SDL_AudioDriverImpl * impl) ...@@ -544,8 +544,7 @@ PAUDIO_Init(SDL_AudioDriverImpl * impl)
impl->CloseDevice = DSP_CloseDevice; impl->CloseDevice = DSP_CloseDevice;
impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: add device enum! */ impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: add device enum! */
/* !!! FIXME: device enum might make this 1. */ return 1; /* this audio target is available. */
return 2; /* 2 == definitely has an audio device. */
} }
AudioBootStrap PAUDIO_bootstrap = { AudioBootStrap PAUDIO_bootstrap = {
......
...@@ -529,8 +529,7 @@ PULSEAUDIO_Init(SDL_AudioDriverImpl * impl) ...@@ -529,8 +529,7 @@ PULSEAUDIO_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = PULSEAUDIO_Deinitialize; impl->Deinitialize = PULSEAUDIO_Deinitialize;
impl->OnlyHasDefaultOutputDevice = 1; impl->OnlyHasDefaultOutputDevice = 1;
/* !!! FIXME: should test if server is available here, return 2 if so. */ return 1; /* this audio target is available. */
return 1;
} }
......
...@@ -883,8 +883,7 @@ QSA_Init(SDL_AudioDriverImpl * impl) ...@@ -883,8 +883,7 @@ QSA_Init(SDL_AudioDriverImpl * impl)
return 1; return 1;
} }
/* At this point we are definitely has an audio device */ return 1; /* this audio target is available. */
return 2;
} }
AudioBootStrap QSAAUDIO_bootstrap = { AudioBootStrap QSAAUDIO_bootstrap = {
......
...@@ -327,8 +327,7 @@ WINWAVEOUT_Init(SDL_AudioDriverImpl * impl) ...@@ -327,8 +327,7 @@ WINWAVEOUT_Init(SDL_AudioDriverImpl * impl)
impl->CloseDevice = WINWAVEOUT_CloseDevice; impl->CloseDevice = WINWAVEOUT_CloseDevice;
impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: Is this true? */ impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: Is this true? */
/* !!! FIXME: not right for device enum? */ return 1; /* this audio target is available. */
return 1;
} }
AudioBootStrap WINWAVEOUT_bootstrap = { AudioBootStrap WINWAVEOUT_bootstrap = {
......
...@@ -508,8 +508,7 @@ DSOUND_Init(SDL_AudioDriverImpl * impl) ...@@ -508,8 +508,7 @@ DSOUND_Init(SDL_AudioDriverImpl * impl)
impl->Deinitialize = DSOUND_Deinitialize; impl->Deinitialize = DSOUND_Deinitialize;
impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME */ impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME */
/* !!! FIXME: not right for device enum? */ return 1; /* this audio target is available. */
return 1;
} }
AudioBootStrap DSOUND_bootstrap = { AudioBootStrap DSOUND_bootstrap = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment