From 8fed2d1efbca11a7aa5a6205e3597736b7abae7c Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 18 Apr 2012 20:30:32 +0200 Subject: [PATCH] Should fix high CPU bug in Pulse. (Thanks to fable2012). --- audio/pulse.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) 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);