CEventLoop: Don't bother looking through fds when select() returns 0.

If it returns 0 that just means we hit the timeout. I suppose we could skip
the timer checks if there are a non-zero number of fds marked as well, but
I'm not sure that's a great idea since it will add some latency.
This commit is contained in:
Andreas Kling 2019-06-05 01:57:28 -07:00
parent 848044b74c
commit 800242ed4e
Notes: sideshowbarker 2024-07-19 20:03:26 +09:00

View file

@ -199,8 +199,8 @@ void CEventLoop::wait_for_event(WaitMode mode)
should_wait_forever = false;
}
int rc = select(max_fd + 1, &rfds, &wfds, nullptr, should_wait_forever ? nullptr : &timeout);
if (rc < 0) {
int marked_fd_count = select(max_fd + 1, &rfds, &wfds, nullptr, should_wait_forever ? nullptr : &timeout);
if (marked_fd_count < 0) {
ASSERT_NOT_REACHED();
}
@ -224,6 +224,9 @@ void CEventLoop::wait_for_event(WaitMode mode)
}
}
if (!marked_fd_count)
return;
for (auto& notifier : *s_notifiers) {
if (FD_ISSET(notifier->fd(), &rfds)) {
if (notifier->on_ready_to_read)