diff --git a/alsaaudio.c b/alsaaudio.c index 7ca6a91..5d9a707 100644 --- a/alsaaudio.c +++ b/alsaaudio.c @@ -1465,9 +1465,10 @@ static PyObject *alsapcm_write(alsapcm_t *self, PyObject *args) int res; snd_pcm_state_t state = snd_pcm_state(self->handle); + Py_BEGIN_ALLOW_THREADS + if ((state != SND_PCM_STATE_XRUN && state != SND_PCM_STATE_SETUP) || (res = snd_pcm_prepare(self->handle)) >= 0) { - Py_BEGIN_ALLOW_THREADS res = snd_pcm_writei(self->handle, data, datalen/self->framesize); if (res == -EPIPE) { /* EPIPE means underrun */