Skip to content

Commit

Permalink
alsa: removed snd_pcm_wait() call before writing to playback device.
Browse files Browse the repository at this point in the history
This would cause playback problems in certain situations, such as on the
Raspberry Pi. The device that the wait was added for seems to not benefit from
it in modern times, and standard desktop Linux seems to do the right thing
when a USB device is unplugged now, without this patch.

Fixes Bugzilla #3599.
  • Loading branch information
icculus committed Sep 10, 2017
1 parent 569c222 commit 93583d4
Showing 1 changed file with 1 addition and 14 deletions.
15 changes: 1 addition & 14 deletions src/audio/alsa/SDL_alsa_audio.c
Expand Up @@ -330,20 +330,7 @@ ALSA_PlayDevice(_THIS)
this->hidden->swizzle_func(this, this->hidden->mixbuf, frames_left);

while ( frames_left > 0 && SDL_AtomicGet(&this->enabled) ) {
int status;

/* This wait is a work-around for a hang when USB devices are
unplugged. Normally it should not result in any waiting,
but in the case of a USB unplug, it serves as a way to
join the playback thread after the timeout occurs */
status = ALSA_snd_pcm_wait(this->hidden->pcm_handle, 1000);
if (status == 0) {
/*fprintf(stderr, "ALSA timeout waiting for available buffer space\n");*/
SDL_OpenedAudioDeviceDisconnected(this);
return;
}

status = ALSA_snd_pcm_writei(this->hidden->pcm_handle,
int status = ALSA_snd_pcm_writei(this->hidden->pcm_handle,
sample_buf, frames_left);

if (status < 0) {
Expand Down

0 comments on commit 93583d4

Please sign in to comment.