Index: base/message_loop/message_pump_default.cc |
diff --git a/base/message_loop/message_pump_default.cc b/base/message_loop/message_pump_default.cc |
index 3449aec8605b32e7eb868573144ecb45929809d7..220625baff498ea0be8496dfe15e16de924df892 100644 |
--- a/base/message_loop/message_pump_default.cc |
+++ b/base/message_loop/message_pump_default.cc |
@@ -4,8 +4,6 @@ |
#include "base/message_loop/message_pump_default.h" |
-#include <algorithm> |
- |
#include "base/logging.h" |
#include "base/threading/thread_restrictions.h" |
#include "build/build_config.h" |
@@ -54,38 +52,7 @@ void MessagePumpDefault::Run(Delegate* delegate) { |
if (delayed_work_time_.is_null()) { |
event_.Wait(); |
} else { |
- TimeDelta delay = delayed_work_time_ - TimeTicks::Now(); |
- if (delay > TimeDelta()) { |
-#if defined(OS_WIN) |
- // TODO(stanisc): crbug.com/623223: Consider moving the OS_WIN specific |
- // logic into TimedWait implementation in waitable_event_win.cc. |
- |
- // crbug.com/487724: on Windows, waiting for less than 1 ms results in |
- // returning from TimedWait promptly and spinning |
- // MessagePumpDefault::Run loop for up to 1 ms - until it is time to |
- // run a delayed task. |min_delay| is the minimum possible wait to |
- // to avoid the spinning. |
- constexpr TimeDelta min_delay = TimeDelta::FromMilliseconds(1); |
- do { |
- delay = std::max(delay, min_delay); |
- if (event_.TimedWait(delay)) |
- break; |
- |
- // TimedWait can time out earlier than the specified |delay| on |
- // Windows. It doesn't make sense to run the outer loop in that case |
- // because there isn't going to be any new work. It is less overhead |
- // to just go back to wait. |
- // In practice this inner wait loop might have up to 3 iterations. |
- delay = delayed_work_time_ - TimeTicks::Now(); |
- } while (delay > TimeDelta()); |
-#else |
- event_.TimedWait(delay); |
-#endif |
- } else { |
danakj
2016/11/16 22:57:29
Can u explain why the if and this else block are g
stanisc
2016/11/17 19:42:22
Good call!
I think it shouldn't matter with the ne
danakj
2016/11/29 02:46:45
Ok thanks. It's true that in order to reach this p
|
- // It looks like delayed_work_time_ indicates a time in the past, so we |
- // need to call DoDelayedWork now. |
- delayed_work_time_ = TimeTicks(); |
- } |
+ event_.TimedWaitUntil(delayed_work_time_); |
} |
// Since event_ is auto-reset, we don't need to do anything special here |
// other than service each delegate method. |