Index: base/message_loop.cc |
=================================================================== |
--- base/message_loop.cc (revision 140108) |
+++ base/message_loop.cc (working copy) |
@@ -258,39 +258,50 @@ |
void MessageLoop::PostTask( |
const tracked_objects::Location& from_here, const base::Closure& task) { |
DCHECK(!task.is_null()) << from_here.ToString(); |
- PendingTask pending_task( |
- from_here, task, CalculateDelayedRuntime(TimeDelta()), true); |
+ PendingTask pending_task(from_here, task, CalculateDelayedRuntime(0), true); |
AddToIncomingQueue(&pending_task); |
} |
void MessageLoop::PostDelayedTask( |
const tracked_objects::Location& from_here, |
const base::Closure& task, |
- TimeDelta delay) { |
+ int64 delay_ms) { |
DCHECK(!task.is_null()) << from_here.ToString(); |
- PendingTask pending_task( |
- from_here, task, CalculateDelayedRuntime(delay), true); |
+ PendingTask pending_task(from_here, task, |
+ CalculateDelayedRuntime(delay_ms), true); |
AddToIncomingQueue(&pending_task); |
} |
+void MessageLoop::PostDelayedTask( |
+ const tracked_objects::Location& from_here, |
+ const base::Closure& task, |
+ base::TimeDelta delay) { |
+ PostDelayedTask(from_here, task, delay.InMillisecondsRoundedUp()); |
+} |
+ |
void MessageLoop::PostNonNestableTask( |
const tracked_objects::Location& from_here, const base::Closure& task) { |
DCHECK(!task.is_null()) << from_here.ToString(); |
- PendingTask pending_task( |
- from_here, task, CalculateDelayedRuntime(TimeDelta()), false); |
+ PendingTask pending_task(from_here, task, CalculateDelayedRuntime(0), false); |
AddToIncomingQueue(&pending_task); |
} |
void MessageLoop::PostNonNestableDelayedTask( |
- const tracked_objects::Location& from_here, |
- const base::Closure& task, |
- TimeDelta delay) { |
+ const tracked_objects::Location& from_here, const base::Closure& task, |
+ int64 delay_ms) { |
DCHECK(!task.is_null()) << from_here.ToString(); |
- PendingTask pending_task( |
- from_here, task, CalculateDelayedRuntime(delay), false); |
+ PendingTask pending_task(from_here, task, |
+ CalculateDelayedRuntime(delay_ms), false); |
AddToIncomingQueue(&pending_task); |
} |
+void MessageLoop::PostNonNestableDelayedTask( |
+ const tracked_objects::Location& from_here, |
+ const base::Closure& task, |
+ base::TimeDelta delay) { |
+ PostNonNestableDelayedTask(from_here, task, delay.InMillisecondsRoundedUp()); |
+} |
+ |
void MessageLoop::Run() { |
AutoRunState save_state(this); |
RunHandler(); |
@@ -532,10 +543,11 @@ |
return did_work; |
} |
-TimeTicks MessageLoop::CalculateDelayedRuntime(TimeDelta delay) { |
+TimeTicks MessageLoop::CalculateDelayedRuntime(int64 delay_ms) { |
TimeTicks delayed_run_time; |
- if (delay > TimeDelta()) { |
- delayed_run_time = TimeTicks::Now() + delay; |
+ if (delay_ms > 0) { |
+ delayed_run_time = |
+ TimeTicks::Now() + TimeDelta::FromMilliseconds(delay_ms); |
#if defined(OS_WIN) |
if (high_resolution_timer_expiration_.is_null()) { |
@@ -544,8 +556,8 @@ |
// which as a percentage is pretty inaccurate. So enable high |
// res timers for any timer which is within 2x of the granularity. |
// This is a tradeoff between accuracy and power management. |
- bool needs_high_res_timers = delay.InMilliseconds() < |
- (2 * base::Time::kMinLowResolutionThresholdMs); |
+ bool needs_high_res_timers = |
+ delay_ms < (2 * base::Time::kMinLowResolutionThresholdMs); |
if (needs_high_res_timers) { |
if (base::Time::ActivateHighResolutionTimer(true)) { |
high_resolution_timer_expiration_ = TimeTicks::Now() + |
@@ -555,7 +567,7 @@ |
} |
#endif |
} else { |
- DCHECK_EQ(delay.InMilliseconds(), 0) << "delay should not be negative"; |
+ DCHECK_EQ(delay_ms, 0) << "delay should not be negative"; |
} |
#if defined(OS_WIN) |