| 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_)
|
| + break;
|
| +
|
| did_work |= delegate->DoDelayedWork(&delayed_work_time_);
|
| if (!keep_running_)
|
| break;
|
| @@ -331,6 +338,7 @@
|
| static_cast<FileDescriptorWatcher*>(context);
|
|
|
| MessagePumpLibevent* pump = controller->pump();
|
| + pump->processed_io_events_ = true;
|
|
|
| if (flags & EV_WRITE) {
|
| controller->OnFileCanWriteWithoutBlocking(fd, pump);
|
| @@ -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_);
|
| }
|
|
|