Strengthen the ability to recover from an XRUN by putting in a call to snd_pcm_prepare first.

This commit is contained in:
Mike Brady
2019-01-03 10:19:44 +00:00
parent b973619d66
commit 41c8c8b9a1
+4 -2
View File
@@ -1021,8 +1021,10 @@ int delay_prep_and_status(snd_pcm_state_t *state, snd_pcm_sframes_t *delay) {
*state = snd_pcm_status_get_state(alsa_snd_pcm_status);
if ((*state == SND_PCM_STATE_SUSPENDED) || (*state == SND_PCM_STATE_XRUN)) {
debug(1, "alsa: recovering from suspended or xrun in delay.");
ret = snd_pcm_recover(alsa_handle, ret, 1);
debug(1, "alsa: recovering from SND_PCM_STATE_* %d in delay_prep_and_status.", *state);
ret = snd_pcm_prepare(alsa_handle);
if (ret == 0)
ret = snd_pcm_recover(alsa_handle, ret, 1);
if (ret == 0) {
ret = snd_pcm_status(alsa_handle, alsa_snd_pcm_status);
if (ret == 0)