summaryrefslogtreecommitdiffstats
path: root/base/message_loop
diff options
context:
space:
mode:
Diffstat (limited to 'base/message_loop')
-rw-r--r--base/message_loop/message_loop.cc7
-rw-r--r--base/message_loop/message_loop_unittest.cc2
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)