| 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..cf68270c56df197fb20b99242eedca1140b675db 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,11 @@ 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 {
|
| - // It looks like delayed_work_time_ indicates a time in the past, so we
|
| - // need to call DoDelayedWork now.
|
| - delayed_work_time_ = TimeTicks();
|
| - }
|
| + // No need to handle already expired |delayed_work_time_| in any special
|
| + // way. When |delayed_work_time_| is in the past TimeWaitUntil returns
|
| + // promptly and |delayed_work_time_| will re-initialized on a next
|
| + // DoDelayedWork call which has to be called in order to get here again.
|
| + 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.
|
|
|