summaryrefslogtreecommitdiffstats
path: root/base/message_pump_libevent.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/message_pump_libevent.cc')
-rw-r--r--base/message_pump_libevent.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/base/message_pump_libevent.cc b/base/message_pump_libevent.cc
index 24eba1e..e5e5652 100644
--- a/base/message_pump_libevent.cc
+++ b/base/message_pump_libevent.cc
@@ -107,6 +107,7 @@ void MessagePumpLibevent::FileDescriptorWatcher::OnFileCanWriteWithoutBlocking(
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,10 @@ void MessagePumpLibevent::Run(Delegate* delegate) {
if (!keep_running_)
break;
+ event_base_loop(event_base_, EVLOOP_NONBLOCK);
+ did_work |= processed_io_events_;
+ processed_io_events_ = false;
+
did_work |= delegate->DoDelayedWork(&delayed_work_time_);
if (!keep_running_)
break;
@@ -295,6 +300,7 @@ void MessagePumpLibevent::WillProcessIOEvent() {
void MessagePumpLibevent::DidProcessIOEvent() {
FOR_EACH_OBSERVER(IOObserver, io_observers_, DidProcessIOEvent());
+ processed_io_events_ = true;
}
bool MessagePumpLibevent::Init() {