mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2024-11-10 23:11:41 +00:00
parent
0edbe06621
commit
3995efca5d
1 changed files with 12 additions and 6 deletions
|
@ -347,6 +347,18 @@ static int fluid_alsa_handle_write_error (snd_pcm_t *pcm, int errval)
|
|||
case -EAGAIN:
|
||||
snd_pcm_wait(pcm, 1);
|
||||
break;
|
||||
// on some BSD variants ESTRPIPE is defined as EPIPE.
|
||||
// not sure why, maybe because this version of alsa doesnt support
|
||||
// suspending pcm stream. anyway, since EPIPE seems to be more
|
||||
// likely than ESTRPIPE, so ifdef it out in case.
|
||||
#if ESTRPIPE != EPIPE
|
||||
case -ESTRPIPE:
|
||||
if (snd_pcm_resume(pcm) != 0) {
|
||||
FLUID_LOG(FLUID_ERR, "Failed to resume the audio device");
|
||||
return FLUID_FAILED;
|
||||
}
|
||||
/* fall through, since the stream got resumed, but still has to be prepared */
|
||||
#endif
|
||||
case -EPIPE:
|
||||
case -EBADFD:
|
||||
if (snd_pcm_prepare(pcm) != 0) {
|
||||
|
@ -354,12 +366,6 @@ static int fluid_alsa_handle_write_error (snd_pcm_t *pcm, int errval)
|
|||
return FLUID_FAILED;
|
||||
}
|
||||
break;
|
||||
case -ESTRPIPE:
|
||||
if ((snd_pcm_resume(pcm) != 0) && (snd_pcm_prepare(pcm) != 0)) {
|
||||
FLUID_LOG(FLUID_ERR, "Failed to resume the audio device");
|
||||
return FLUID_FAILED;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
FLUID_LOG(FLUID_ERR, "The audio device error: %s", snd_strerror(errval));
|
||||
return FLUID_FAILED;
|
||||
|
|
Loading…
Reference in a new issue