Chromium Code Reviews| 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_); |
| } |