diff --git a/audio/pulse.c b/audio/pulse.c index 921c0fc287..b64ff27ce0 100644 --- a/audio/pulse.c +++ b/audio/pulse.c @@ -182,18 +182,15 @@ static ssize_t pulse_write(void *data, const void *buf, size_t size) size_t length = pa_stream_writable_size(pa->stream); pa_threaded_mainloop_unlock(pa->mainloop); - while (length < size) + while (length < size && !pa->nonblock) { - pa_threaded_mainloop_wait(pa->mainloop); pa_threaded_mainloop_lock(pa->mainloop); + pa_threaded_mainloop_wait(pa->mainloop); length = pa_stream_writable_size(pa->stream); pa_threaded_mainloop_unlock(pa->mainloop); - - if (pa->nonblock) - break; } - size_t write_size = length < size ? length : size; + size_t write_size = min(length, size); pa_threaded_mainloop_lock(pa->mainloop); pa_stream_write(pa->stream, buf, write_size, NULL, 0LL, PA_SEEK_RELATIVE);