Fixed assertion failure in diskaudio target caused by new hotplugging support.

Fixes Bugzilla #3032.
This commit is contained in:
Ryan C. Gordon 2015-06-30 13:46:06 -04:00
parent bf9bd59c01
commit 4986563d2f
1 changed files with 10 additions and 1 deletions

View File

@ -102,8 +102,9 @@ DISKAUD_CloseDevice(_THIS)
static int static int
DISKAUD_OpenDevice(_THIS, void *handle, const char *devname, int iscapture) DISKAUD_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
{ {
/* handle != NULL means "user specified the placeholder name on the fake detected device list" */
const char *fname = DISKAUD_GetOutputFilename(handle ? NULL : devname);
const char *envr = SDL_getenv(DISKENVR_WRITEDELAY); const char *envr = SDL_getenv(DISKENVR_WRITEDELAY);
const char *fname = DISKAUD_GetOutputFilename(devname);
this->hidden = (struct SDL_PrivateAudioData *) this->hidden = (struct SDL_PrivateAudioData *)
SDL_malloc(sizeof(*this->hidden)); SDL_malloc(sizeof(*this->hidden));
@ -141,6 +142,13 @@ DISKAUD_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
return 0; return 0;
} }
static void
DISKAUD_DetectDevices(void)
{
/* !!! FIXME: stole this literal string from DEFAULT_OUTPUT_DEVNAME in SDL_audio.c */
SDL_AddAudioDevice(SDL_FALSE, "System audio output device", (void *) 0x1);
}
static int static int
DISKAUD_Init(SDL_AudioDriverImpl * impl) DISKAUD_Init(SDL_AudioDriverImpl * impl)
{ {
@ -150,6 +158,7 @@ DISKAUD_Init(SDL_AudioDriverImpl * impl)
impl->PlayDevice = DISKAUD_PlayDevice; impl->PlayDevice = DISKAUD_PlayDevice;
impl->GetDeviceBuf = DISKAUD_GetDeviceBuf; impl->GetDeviceBuf = DISKAUD_GetDeviceBuf;
impl->CloseDevice = DISKAUD_CloseDevice; impl->CloseDevice = DISKAUD_CloseDevice;
impl->DetectDevices = DISKAUD_DetectDevices;
impl->AllowsArbitraryDeviceNames = 1; impl->AllowsArbitraryDeviceNames = 1;