| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/scheduler/begin_frame_source.h" | 5 #include "cc/scheduler/begin_frame_source.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/atomic_sequence_num.h" | 9 #include "base/atomic_sequence_num.h" |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 } | 110 } |
| 111 | 111 |
| 112 bool BackToBackBeginFrameSource::IsThrottled() const { | 112 bool BackToBackBeginFrameSource::IsThrottled() const { |
| 113 return false; | 113 return false; |
| 114 } | 114 } |
| 115 | 115 |
| 116 void BackToBackBeginFrameSource::OnTimerTick() { | 116 void BackToBackBeginFrameSource::OnTimerTick() { |
| 117 base::TimeTicks frame_time = time_source_->LastTickTime(); | 117 base::TimeTicks frame_time = time_source_->LastTickTime(); |
| 118 base::TimeDelta default_interval = BeginFrameArgs::DefaultInterval(); | 118 base::TimeDelta default_interval = BeginFrameArgs::DefaultInterval(); |
| 119 BeginFrameArgs args = BeginFrameArgs::Create( | 119 BeginFrameArgs args = BeginFrameArgs::Create( |
| 120 BEGINFRAME_FROM_HERE, source_id(), next_sequence_number_, frame_time, | 120 BEGINFRAME_FROM_HERE, source_id(), next_sequence_number_, |
| 121 BeginFrameArgs::kDefaultSourceFrameNumber, frame_time, |
| 121 frame_time + default_interval, default_interval, BeginFrameArgs::NORMAL); | 122 frame_time + default_interval, default_interval, BeginFrameArgs::NORMAL); |
| 122 next_sequence_number_++; | 123 next_sequence_number_++; |
| 123 | 124 |
| 124 // This must happen after getting the LastTickTime() from the time source. | 125 // This must happen after getting the LastTickTime() from the time source. |
| 125 time_source_->SetActive(false); | 126 time_source_->SetActive(false); |
| 126 | 127 |
| 127 std::unordered_set<BeginFrameObserver*> pending_observers; | 128 std::unordered_set<BeginFrameObserver*> pending_observers; |
| 128 pending_observers.swap(pending_begin_frame_observers_); | 129 pending_observers.swap(pending_begin_frame_observers_); |
| 129 DCHECK(!pending_observers.empty()); | 130 DCHECK(!pending_observers.empty()); |
| 130 for (BeginFrameObserver* obs : pending_observers) | 131 for (BeginFrameObserver* obs : pending_observers) |
| (...skipping 28 matching lines...) Expand all Loading... |
| 159 base::TimeDelta interval) { | 160 base::TimeDelta interval) { |
| 160 authoritative_interval_ = interval; | 161 authoritative_interval_ = interval; |
| 161 OnUpdateVSyncParameters(last_timebase_, interval); | 162 OnUpdateVSyncParameters(last_timebase_, interval); |
| 162 } | 163 } |
| 163 | 164 |
| 164 BeginFrameArgs DelayBasedBeginFrameSource::CreateBeginFrameArgs( | 165 BeginFrameArgs DelayBasedBeginFrameSource::CreateBeginFrameArgs( |
| 165 base::TimeTicks frame_time, | 166 base::TimeTicks frame_time, |
| 166 BeginFrameArgs::BeginFrameArgsType type) { | 167 BeginFrameArgs::BeginFrameArgsType type) { |
| 167 uint64_t sequence_number = next_sequence_number_++; | 168 uint64_t sequence_number = next_sequence_number_++; |
| 168 return BeginFrameArgs::Create( | 169 return BeginFrameArgs::Create( |
| 169 BEGINFRAME_FROM_HERE, source_id(), sequence_number, frame_time, | 170 BEGINFRAME_FROM_HERE, source_id(), sequence_number, |
| 171 BeginFrameArgs::kDefaultSourceFrameNumber, frame_time, |
| 170 time_source_->NextTickTime(), time_source_->Interval(), type); | 172 time_source_->NextTickTime(), time_source_->Interval(), type); |
| 171 } | 173 } |
| 172 | 174 |
| 173 void DelayBasedBeginFrameSource::AddObserver(BeginFrameObserver* obs) { | 175 void DelayBasedBeginFrameSource::AddObserver(BeginFrameObserver* obs) { |
| 174 DCHECK(obs); | 176 DCHECK(obs); |
| 175 DCHECK(observers_.find(obs) == observers_.end()); | 177 DCHECK(observers_.find(obs) == observers_.end()); |
| 176 | 178 |
| 177 observers_.insert(obs); | 179 observers_.insert(obs); |
| 178 obs->OnBeginFrameSourcePausedChanged(false); | 180 obs->OnBeginFrameSourcePausedChanged(false); |
| 179 time_source_->SetActive(true); | 181 time_source_->SetActive(true); |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 frame_active_ = false; | 438 frame_active_ = false; |
| 437 | 439 |
| 438 BeginFrameAck ack(missed_begin_frame_args_.source_id, | 440 BeginFrameAck ack(missed_begin_frame_args_.source_id, |
| 439 missed_begin_frame_args_.sequence_number, | 441 missed_begin_frame_args_.sequence_number, |
| 440 ack_tracker_.LatestConfirmedSequenceNumber(), | 442 ack_tracker_.LatestConfirmedSequenceNumber(), |
| 441 ack_tracker_.AnyObserversHadDamage()); | 443 ack_tracker_.AnyObserversHadDamage()); |
| 442 client_->OnDidFinishFrame(ack); | 444 client_->OnDidFinishFrame(ack); |
| 443 } | 445 } |
| 444 | 446 |
| 445 } // namespace cc | 447 } // namespace cc |
| OLD | NEW |