Index: base/message_pump_libevent.cc |
=================================================================== |
--- base/message_pump_libevent.cc (revision 91167) |
+++ base/message_pump_libevent.cc (working copy) |
@@ -107,6 +107,7 @@ |
MessagePumpLibevent::MessagePumpLibevent() |
: keep_running_(true), |
in_run_(false), |
+ processed_io_events_(false), |
event_base_(event_base_new()), |
wakeup_pipe_in_(-1), |
wakeup_pipe_out_(-1) { |
@@ -226,6 +227,12 @@ |
if (!keep_running_) |
break; |
+ event_base_loop(event_base_, EVLOOP_NONBLOCK); |
+ did_work |= processed_io_events_; |
+ processed_io_events_ = false; |
+ if (!keep_running_) |
Mark Mentovai
2011/06/30 22:07:16
I was wondering about this. I should have spoken u
|
+ break; |
+ |
did_work |= delegate->DoDelayedWork(&delayed_work_time_); |
if (!keep_running_) |
break; |
@@ -295,6 +302,7 @@ |
void MessagePumpLibevent::DidProcessIOEvent() { |
FOR_EACH_OBSERVER(IOObserver, io_observers_, DidProcessIOEvent()); |
+ processed_io_events_ = true; |
} |
bool MessagePumpLibevent::Init() { |
@@ -351,6 +359,7 @@ |
char buf; |
int nread = HANDLE_EINTR(read(socket, &buf, 1)); |
DCHECK_EQ(nread, 1); |
+ that->processed_io_events_ = true; |
// Tell libevent to break out of inner loop. |
event_base_loopbreak(that->event_base_); |
} |