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/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
70 pending_begin_frame_observers_.insert(obs); | 70 pending_begin_frame_observers_.insert(obs); |
71 obs->OnBeginFrameSourcePausedChanged(false); | 71 obs->OnBeginFrameSourcePausedChanged(false); |
72 time_source_->SetActive(true); | 72 time_source_->SetActive(true); |
73 } | 73 } |
74 | 74 |
75 void BackToBackBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { | 75 void BackToBackBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { |
76 DCHECK(obs); | 76 DCHECK(obs); |
77 DCHECK(observers_.find(obs) != observers_.end()); | 77 DCHECK(observers_.find(obs) != observers_.end()); |
78 observers_.erase(obs); | 78 observers_.erase(obs); |
79 pending_begin_frame_observers_.erase(obs); | 79 pending_begin_frame_observers_.erase(obs); |
80 if (observers_.empty()) | 80 if (pending_begin_frame_observers_.empty()) |
81 time_source_->SetActive(false); | 81 time_source_->SetActive(false); |
82 } | 82 } |
83 | 83 |
84 void BackToBackBeginFrameSource::DidFinishFrame(BeginFrameObserver* obs, | 84 void BackToBackBeginFrameSource::DidFinishFrame(BeginFrameObserver* obs, |
85 size_t remaining_frames) { | 85 size_t remaining_frames) { |
86 if (remaining_frames == 0 && observers_.find(obs) != observers_.end()) { | 86 if (remaining_frames == 0 && observers_.find(obs) != observers_.end()) { |
87 pending_begin_frame_observers_.insert(obs); | 87 pending_begin_frame_observers_.insert(obs); |
88 time_source_->SetActive(true); | 88 time_source_->SetActive(true); |
89 } | 89 } |
90 } | 90 } |
91 | 91 |
92 bool BackToBackBeginFrameSource::IsThrottled() const { | 92 bool BackToBackBeginFrameSource::IsThrottled() const { |
93 return false; | 93 return false; |
94 } | 94 } |
95 | 95 |
96 void BackToBackBeginFrameSource::OnTimerTick() { | 96 void BackToBackBeginFrameSource::OnTimerTick() { |
brianderson
2016/12/20 16:37:36
Would it make sense to DCHECK here that pending_be
Eric Seckler
2016/12/20 16:43:33
I assume you mean "not empty" :) Added a DCHECK be
| |
97 base::TimeTicks frame_time = time_source_->LastTickTime(); | 97 base::TimeTicks frame_time = time_source_->LastTickTime(); |
98 base::TimeDelta default_interval = BeginFrameArgs::DefaultInterval(); | 98 base::TimeDelta default_interval = BeginFrameArgs::DefaultInterval(); |
99 BeginFrameArgs args = BeginFrameArgs::Create( | 99 BeginFrameArgs args = BeginFrameArgs::Create( |
100 BEGINFRAME_FROM_HERE, frame_time, frame_time + default_interval, | 100 BEGINFRAME_FROM_HERE, frame_time, frame_time + default_interval, |
101 default_interval, BeginFrameArgs::NORMAL); | 101 default_interval, BeginFrameArgs::NORMAL); |
102 | 102 |
103 // This must happen after getting the LastTickTime() from the time source. | 103 // This must happen after getting the LastTickTime() from the time source. |
104 time_source_->SetActive(false); | 104 time_source_->SetActive(false); |
105 | 105 |
106 std::unordered_set<BeginFrameObserver*> pending_observers; | 106 std::unordered_set<BeginFrameObserver*> pending_observers; |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
244 | 244 |
245 void ExternalBeginFrameSource::OnBeginFrame(const BeginFrameArgs& args) { | 245 void ExternalBeginFrameSource::OnBeginFrame(const BeginFrameArgs& args) { |
246 missed_begin_frame_args_ = args; | 246 missed_begin_frame_args_ = args; |
247 missed_begin_frame_args_.type = BeginFrameArgs::MISSED; | 247 missed_begin_frame_args_.type = BeginFrameArgs::MISSED; |
248 std::unordered_set<BeginFrameObserver*> observers(observers_); | 248 std::unordered_set<BeginFrameObserver*> observers(observers_); |
249 for (auto* obs : observers) | 249 for (auto* obs : observers) |
250 obs->OnBeginFrame(args); | 250 obs->OnBeginFrame(args); |
251 } | 251 } |
252 | 252 |
253 } // namespace cc | 253 } // namespace cc |
OLD | NEW |