diff options
Diffstat (limited to 'base/message_loop')
-rw-r--r-- | base/message_loop/message_loop.cc | 7 | ||||
-rw-r--r-- | base/message_loop/message_loop_unittest.cc | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc index 16b999c..c01e542 100644 --- a/base/message_loop/message_loop.cc +++ b/base/message_loop/message_loop.cc @@ -616,8 +616,11 @@ bool MessageLoop::DoIdleWork() { // _if_ triggered by the timer happens with good resolution. If we don't // do this the default resolution is 15ms which might not be acceptable // for some tasks. - in_high_res_mode_ = pending_high_res_tasks_ > 0; - Time::ActivateHighResolutionTimer(in_high_res_mode_); + bool high_res = pending_high_res_tasks_ > 0; + if (high_res != in_high_res_mode_) { + in_high_res_mode_ = high_res; + Time::ActivateHighResolutionTimer(in_high_res_mode_); + } #endif return false; } diff --git a/base/message_loop/message_loop_unittest.cc b/base/message_loop/message_loop_unittest.cc index 866c20b..0a6e817 100644 --- a/base/message_loop/message_loop_unittest.cc +++ b/base/message_loop/message_loop_unittest.cc @@ -726,6 +726,7 @@ TEST(MessageLoopTest, WaitForIO) { TEST(MessageLoopTest, HighResolutionTimer) { MessageLoop loop; + Time::EnableHighResolutionTimer(true); const TimeDelta kFastTimer = TimeDelta::FromMilliseconds(5); const TimeDelta kSlowTimer = TimeDelta::FromMilliseconds(100); @@ -744,6 +745,7 @@ TEST(MessageLoopTest, HighResolutionTimer) { EXPECT_FALSE(loop.HasHighResolutionTasks()); loop.Run(); EXPECT_FALSE(loop.HasHighResolutionTasks()); + Time::EnableHighResolutionTimer(false); } #endif // defined(OS_WIN) |