From e7c7e652a33ee143d183d8ba1916fe1bf0f3a980 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 13 Jan 2009 19:30:34 +0100 Subject: input_curl: use select() to eliminate busy loop during connect When decoder_run_song() (decoder_thread.c) waits for the input stream to become ready, it did that in a busy loop. Add a select() call to input_curl_buffer() during connect/handshake (i.e. before the first chunk of body data was received), to let the CPU relax. --- src/input_curl.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/input_curl.c') diff --git a/src/input_curl.c b/src/input_curl.c index f86386522..d9655fc62 100644 --- a/src/input_curl.c +++ b/src/input_curl.c @@ -470,6 +470,12 @@ input_curl_buffer(struct input_stream *is) c->buffered = false; + if (!is->ready) + /* not ready yet means the caller is waiting in a busy + loop; relax that by calling select() on the + socket */ + input_curl_select(c); + do { mcode = curl_multi_perform(c->multi, &running_handles); } while (mcode == CURLM_CALL_MULTI_PERFORM && -- cgit v1.2.3