fix deadlock on close device

James Zipperer

snd_pcm_drain doesn't always drain when you unplug a usb device.  Use snd_pcm_drop instead
This commit is contained in:
Sam Lantinga
2016-10-04 06:46:46 -07:00
parent 2558c9c836
commit 69cf170356
2 changed files with 11 additions and 7 deletions

View File

@@ -725,13 +725,15 @@ SDL_RunAudio(void *devicep)
}
/* !!! FIXME: this should be LockDevice. */
SDL_LockMutex(device->mixer_lock);
if (SDL_AtomicGet(&device->paused)) {
SDL_memset(stream, silence, stream_len);
} else {
(*callback) (udata, stream, stream_len);
if ( SDL_AtomicGet(&device->enabled) ) {
SDL_LockMutex(device->mixer_lock);
if (SDL_AtomicGet(&device->paused)) {
SDL_memset(stream, silence, stream_len);
} else {
(*callback) (udata, stream, stream_len);
}
SDL_UnlockMutex(device->mixer_lock);
}
SDL_UnlockMutex(device->mixer_lock);
/* Convert the audio if necessary */
if (device->convert.needed && SDL_AtomicGet(&device->enabled)) {