| Index: base/message_loop.cc
|
| ===================================================================
|
| --- base/message_loop.cc (revision 82646)
|
| +++ base/message_loop.cc (working copy)
|
| @@ -15,6 +15,7 @@
|
| #include "base/scoped_ptr.h"
|
| #include "base/third_party/dynamic_annotations/dynamic_annotations.h"
|
| #include "base/threading/thread_local.h"
|
| +#include "base/time.h"
|
| #include "base/tracked_objects.h"
|
|
|
| #if defined(OS_MACOSX)
|
| @@ -226,6 +227,16 @@
|
|
|
| // OK, now make it so that no one can find us.
|
| lazy_tls_ptr.Pointer()->Set(NULL);
|
| +
|
| +#if defined(OS_WIN)
|
| + // If we left the high-resolution timer activated, deactivate it now.
|
| + // Doing this is not-critical, it is mainly to make sure we track
|
| + // the high resolution timer activations properly in our unit tests.
|
| + if (!high_resolution_timer_expiration_.is_null()) {
|
| + base::Time::ActivateHighResolutionTimer(false);
|
| + high_resolution_timer_expiration_ = base::TimeTicks();
|
| + }
|
| +#endif
|
| }
|
|
|
| // static
|
| @@ -572,9 +583,10 @@
|
| bool needs_high_res_timers =
|
| delay_ms < (2 * base::Time::kMinLowResolutionThresholdMs);
|
| if (needs_high_res_timers) {
|
| - base::Time::ActivateHighResolutionTimer(true);
|
| - high_resolution_timer_expiration_ = TimeTicks::Now() +
|
| - TimeDelta::FromMilliseconds(kHighResolutionTimerModeLeaseTimeMs);
|
| + if (base::Time::ActivateHighResolutionTimer(true)) {
|
| + high_resolution_timer_expiration_ = TimeTicks::Now() +
|
| + TimeDelta::FromMilliseconds(kHighResolutionTimerModeLeaseTimeMs);
|
| + }
|
| }
|
| }
|
| #endif
|
|
|