diff options
author | wtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-30 15:39:21 +0000 |
---|---|---|
committer | wtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-30 15:39:21 +0000 |
commit | 81aa9e1c829dfc8058b665d7c13106b5b1bd8fcf (patch) | |
tree | 840e14909be7183ed2ce6664dd0bc47cd36905eb /base/message_pump_libevent.cc | |
parent | c2610f7883a30763fcd0d1c4863967cc00dcc905 (diff) | |
download | chromium_src-81aa9e1c829dfc8058b665d7c13106b5b1bd8fcf.zip chromium_src-81aa9e1c829dfc8058b665d7c13106b5b1bd8fcf.tar.gz chromium_src-81aa9e1c829dfc8058b665d7c13106b5b1bd8fcf.tar.bz2 |
Change MessagePumpLibevent::Run to process I/O events before doing idle
work.
R=agl@chromium.org,jar@chromium.org,mark@chromium.org,rvargas@chromium.org
BUG=87707
TEST=covered by existing unit tests
Review URL: http://codereview.chromium.org/7262011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91137 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/message_pump_libevent.cc')
-rw-r--r-- | base/message_pump_libevent.cc | 6 |
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() { |