Index: cc/scheduler/frame_rate_controller.cc |
diff --git a/cc/scheduler/frame_rate_controller.cc b/cc/scheduler/frame_rate_controller.cc |
index 243ef6b62918a1f4b753e24cf70e93d4ac3050dc..beaa1e157657c64af5f0ed5baa569d089ba6aa8e 100644 |
--- a/cc/scheduler/frame_rate_controller.cc |
+++ b/cc/scheduler/frame_rate_controller.cc |
@@ -15,59 +15,15 @@ |
namespace cc { |
-class FrameRateControllerTimeSourceAdapter : public TimeSourceClient { |
- public: |
- static scoped_ptr<FrameRateControllerTimeSourceAdapter> Create( |
- FrameRateController* frame_rate_controller) { |
- return make_scoped_ptr( |
- new FrameRateControllerTimeSourceAdapter(frame_rate_controller)); |
- } |
- virtual ~FrameRateControllerTimeSourceAdapter() {} |
- |
- virtual void OnTimerTick() OVERRIDE { |
- frame_rate_controller_->OnTimerTick(); |
- } |
- |
- private: |
- explicit FrameRateControllerTimeSourceAdapter( |
- FrameRateController* frame_rate_controller) |
- : frame_rate_controller_(frame_rate_controller) {} |
- |
- FrameRateController* frame_rate_controller_; |
-}; |
- |
FrameRateController::FrameRateController(scoped_refptr<TimeSource> timer) |
: client_(NULL), |
- num_frames_pending_(0), |
- max_swaps_pending_(0), |
interval_(BeginFrameArgs::DefaultInterval()), |
time_source_(timer), |
- active_(false), |
- is_time_source_throttling_(true), |
- manual_tick_pending_(false), |
- task_runner_(NULL), |
- weak_factory_(this) { |
- time_source_client_adapter_ = |
- FrameRateControllerTimeSourceAdapter::Create(this); |
- time_source_->SetClient(time_source_client_adapter_.get()); |
+ active_(false) { |
+ time_source_->SetClient(this); |
} |
-FrameRateController::FrameRateController( |
- base::SingleThreadTaskRunner* task_runner) |
- : client_(NULL), |
- num_frames_pending_(0), |
- max_swaps_pending_(0), |
- interval_(BeginFrameArgs::DefaultInterval()), |
- active_(false), |
- is_time_source_throttling_(false), |
- manual_tick_pending_(false), |
- task_runner_(task_runner), |
- weak_factory_(this) {} |
- |
-FrameRateController::~FrameRateController() { |
- if (is_time_source_throttling_) |
- time_source_->SetActive(false); |
-} |
+FrameRateController::~FrameRateController() { time_source_->SetActive(false); } |
BeginFrameArgs FrameRateController::SetActive(bool active) { |
if (active_ == active) |
@@ -75,35 +31,20 @@ BeginFrameArgs FrameRateController::SetActive(bool active) { |
TRACE_EVENT1("cc", "FrameRateController::SetActive", "active", active); |
active_ = active; |
- if (is_time_source_throttling_) { |
- base::TimeTicks missed_tick_time = time_source_->SetActive(active); |
- if (!missed_tick_time.is_null()) { |
- base::TimeTicks deadline = NextTickTime(); |
- return BeginFrameArgs::Create( |
- missed_tick_time, deadline + deadline_adjustment_, interval_); |
- } |
- } else { |
- if (active) { |
- PostManualTick(); |
- } else { |
- weak_factory_.InvalidateWeakPtrs(); |
- manual_tick_pending_ = false; |
- } |
+ base::TimeTicks missed_tick_time = time_source_->SetActive(active); |
+ if (!missed_tick_time.is_null()) { |
+ base::TimeTicks deadline = NextTickTime(); |
+ return BeginFrameArgs::Create( |
+ missed_tick_time, deadline + deadline_adjustment_, interval_); |
} |
return BeginFrameArgs(); |
} |
-void FrameRateController::SetMaxSwapsPending(int max_swaps_pending) { |
- DCHECK_GE(max_swaps_pending, 0); |
- max_swaps_pending_ = max_swaps_pending; |
-} |
- |
void FrameRateController::SetTimebaseAndInterval(base::TimeTicks timebase, |
base::TimeDelta interval) { |
interval_ = interval; |
- if (is_time_source_throttling_) |
- time_source_->SetTimebaseAndInterval(timebase, interval); |
+ time_source_->SetTimebaseAndInterval(timebase, interval); |
} |
void FrameRateController::SetDeadlineAdjustment(base::TimeDelta delta) { |
@@ -114,65 +55,22 @@ void FrameRateController::OnTimerTick() { |
TRACE_EVENT0("cc", "FrameRateController::OnTimerTick"); |
DCHECK(active_); |
- // Check if we have too many frames in flight. |
- bool throttled = |
- max_swaps_pending_ && num_frames_pending_ >= max_swaps_pending_; |
- TRACE_COUNTER_ID1("cc", "ThrottledCompositor", task_runner_, throttled); |
- |
if (client_) { |
// TODO(brianderson): Use an adaptive parent compositor deadline. |
base::TimeTicks frame_time = LastTickTime(); |
base::TimeTicks deadline = NextTickTime(); |
BeginFrameArgs args = BeginFrameArgs::Create( |
frame_time, deadline + deadline_adjustment_, interval_); |
- client_->FrameRateControllerTick(throttled, args); |
+ client_->FrameRateControllerTick(args); |
} |
- |
- if (!is_time_source_throttling_ && !throttled) |
- PostManualTick(); |
-} |
- |
-void FrameRateController::PostManualTick() { |
- if (active_ && !manual_tick_pending_) { |
- manual_tick_pending_ = true; |
- task_runner_->PostTask(FROM_HERE, |
- base::Bind(&FrameRateController::ManualTick, |
- weak_factory_.GetWeakPtr())); |
- } |
-} |
- |
-void FrameRateController::ManualTick() { |
- manual_tick_pending_ = false; |
- OnTimerTick(); |
-} |
- |
-void FrameRateController::DidSwapBuffers() { |
- num_frames_pending_++; |
-} |
- |
-void FrameRateController::DidSwapBuffersComplete() { |
- DCHECK_GT(num_frames_pending_, 0); |
- num_frames_pending_--; |
- if (!is_time_source_throttling_) |
- PostManualTick(); |
-} |
- |
-void FrameRateController::DidAbortAllPendingFrames() { |
- num_frames_pending_ = 0; |
} |
base::TimeTicks FrameRateController::NextTickTime() { |
- if (is_time_source_throttling_) |
- return time_source_->NextTickTime(); |
- |
- return base::TimeTicks(); |
+ return time_source_->NextTickTime(); |
} |
base::TimeTicks FrameRateController::LastTickTime() { |
- if (is_time_source_throttling_) |
- return time_source_->LastTickTime(); |
- |
- return gfx::FrameTime::Now(); |
+ return time_source_->LastTickTime(); |
} |
} // namespace cc |