Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4396)

Unified Diff: cc/scheduler/delay_based_time_source.cc

Issue 22887010: cc: Handle future timebases properly in DelayBasedTimeSource (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: nix extraneous epsilon Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | cc/scheduler/delay_based_time_source_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scheduler/delay_based_time_source.cc
diff --git a/cc/scheduler/delay_based_time_source.cc b/cc/scheduler/delay_based_time_source.cc
index 1b162c9c88609e793a2794029597677af1a7adfc..412fd9a0064dfbb0c82d8b3e598b1c1ba2ff3b4f 100644
--- a/cc/scheduler/delay_based_time_source.cc
+++ b/cc/scheduler/delay_based_time_source.cc
@@ -193,9 +193,17 @@ base::TimeTicks DelayBasedTimeSource::Now() const {
base::TimeTicks DelayBasedTimeSource::NextTickTarget(base::TimeTicks now) {
const base::TimeDelta epsilon(base::TimeDelta::FromMicroseconds(1));
base::TimeDelta new_interval = next_parameters_.interval;
- int intervals_elapsed =
- (now - next_parameters_.tick_target + new_interval - epsilon) /
- new_interval;
+
+ // Integer division rounds towards 0, but we always want to round down the
+ // number of intervals_elapsed, so we need the extra condition here.
+ int intervals_elapsed;
+ if (next_parameters_.tick_target < now) {
jdduke (slow) 2013/08/14 22:39:37 To make this a bit easier to read, what about defi
+ intervals_elapsed =
+ (now - next_parameters_.tick_target + new_interval - epsilon) /
+ new_interval;
+ } else {
+ intervals_elapsed = (now - next_parameters_.tick_target) / new_interval;
+ }
base::TimeTicks new_tick_target =
next_parameters_.tick_target + new_interval * intervals_elapsed;
DCHECK(now <= new_tick_target)
« no previous file with comments | « no previous file | cc/scheduler/delay_based_time_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698