Index: sky/scheduler/timer.cc |
diff --git a/sky/scheduler/timer.cc b/sky/scheduler/timer.cc |
deleted file mode 100644 |
index f708da0ea978398c365f2f7e6350b27f9e060acc..0000000000000000000000000000000000000000 |
--- a/sky/scheduler/timer.cc |
+++ /dev/null |
@@ -1,94 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "sky/scheduler/timer.h" |
- |
-#include <cstdlib> |
- |
-#include "base/bind.h" |
-#include "base/tracked_objects.h" |
- |
-namespace sky { |
- |
-// We're willing to slop around 1/4 of a tick duration to avoid trashing our |
-// client with irregular ticks. |
-static const int64 kTickSlop = 4; |
- |
-Timer::Client::~Client() { |
-} |
- |
-Timer::Timer(Client* client, |
- scoped_refptr<base::SingleThreadTaskRunner> task_runner) |
- : client_(client), |
- task_runner_(task_runner), |
- enabled_(false), |
- weak_factory_(this) { |
- DCHECK(client_); |
-} |
- |
-Timer::~Timer() { |
-} |
- |
-void Timer::SetEnabled(bool enabled) { |
- enabled_ = enabled; |
- |
- if (enabled_ && current_target_.is_null()) |
- ScheduleNextTick(base::TimeTicks::Now()); |
-} |
- |
-void Timer::SetInterval(const TimeInterval& interval) { |
- interval_ = interval; |
- |
- // We don't have a tick scheduled, so there's no need to reschedule it. |
- if (current_target_.is_null()) |
- return; |
- |
- base::TimeTicks now = base::TimeTicks::Now(); |
- |
- base::TimeTicks new_target = NextTickTarget(now); |
- base::TimeDelta delta = base::TimeDelta::FromInternalValue( |
- std::abs((new_target - current_target_).ToInternalValue())); |
- |
- if (delta * kTickSlop < interval_.duration) |
- return; |
- |
- current_target_ = base::TimeTicks(); |
- weak_factory_.InvalidateWeakPtrs(); |
- PostTickTask(now, new_target); |
-} |
- |
-base::TimeTicks Timer::NextTickTarget(base::TimeTicks now) { |
- base::TimeTicks target = interval_.NextAfter(now); |
- |
- // If we're targeting a time that's too soon since the last tick, we push out |
- // the target to the next tick. |
- if ((target - last_tick_) * kTickSlop < interval_.duration) |
- target += interval_.duration; |
- |
- return target; |
-} |
- |
-void Timer::ScheduleNextTick(base::TimeTicks now) { |
- PostTickTask(now, NextTickTarget(now)); |
-} |
- |
-void Timer::PostTickTask(base::TimeTicks now, base::TimeTicks target) { |
- DCHECK(current_target_.is_null()); |
- current_target_ = target; |
- task_runner_->PostDelayedTask( |
- FROM_HERE, base::Bind(&Timer::OnTimerFired, weak_factory_.GetWeakPtr()), |
- current_target_ - now); |
-} |
- |
-void Timer::OnTimerFired() { |
- current_target_ = base::TimeTicks(); |
- if (!enabled_) |
- return; |
- base::TimeTicks now = base::TimeTicks::Now(); |
- ScheduleNextTick(now); |
- last_tick_ = now; |
- client_->OnTimerTick(now); |
- // We might be deleted here. |
-} |
-} |