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.
This commit is contained in:
Max Kellermann 2009-01-13 19:30:34 +01:00
parent d82061b7ff
commit e7c7e652a3
1 changed files with 6 additions and 0 deletions

View File

@ -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 &&