mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2024-11-11 07:21:39 +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:
|
case -EAGAIN:
|
||||||
snd_pcm_wait(pcm, 1);
|
snd_pcm_wait(pcm, 1);
|
||||||
break;
|
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 -EPIPE:
|
||||||
case -EBADFD:
|
case -EBADFD:
|
||||||
if (snd_pcm_prepare(pcm) != 0) {
|
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;
|
return FLUID_FAILED;
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
FLUID_LOG(FLUID_ERR, "The audio device error: %s", snd_strerror(errval));
|
FLUID_LOG(FLUID_ERR, "The audio device error: %s", snd_strerror(errval));
|
||||||
return FLUID_FAILED;
|
return FLUID_FAILED;
|
||||||
|
|
Loading…
Reference in a new issue