Index: cc/scheduler/begin_frame_source.cc |
diff --git a/cc/scheduler/begin_frame_source.cc b/cc/scheduler/begin_frame_source.cc |
index be6394e617a88882f5806432ef0d3de16927d2cc..8282286ceba49b52bbcd698b6b39528443e9569a 100644 |
--- a/cc/scheduler/begin_frame_source.cc |
+++ b/cc/scheduler/begin_frame_source.cc |
@@ -284,20 +284,9 @@ void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) { |
client_->OnNeedsBeginFrames(true); |
// Send a MISSED begin frame if necessary. |
- if (last_begin_frame_args_.IsValid()) { |
- const BeginFrameArgs& last_args = obs->LastUsedBeginFrameArgs(); |
- if (!last_args.IsValid() || |
- (last_begin_frame_args_.frame_time > last_args.frame_time)) { |
- DCHECK( |
- (last_begin_frame_args_.source_id != last_args.source_id) || |
- (last_begin_frame_args_.sequence_number > last_args.sequence_number)) |
- << "current " << last_begin_frame_args_.AsValue()->ToString() |
- << ", last " << last_args.AsValue()->ToString(); |
- BeginFrameArgs missed_args = last_begin_frame_args_; |
- missed_args.type = BeginFrameArgs::MISSED; |
- obs->OnBeginFrame(missed_args); |
- } |
- } |
+ BeginFrameArgs missed_args; |
+ if (GetMissedBeginFrameArgs(obs, &missed_args)) |
sunnyps
2017/05/30 22:13:16
nit: Can you add a DCHECK_EQ(missed_args.type, Beg
stanisc
2017/05/31 01:17:52
Done.
|
+ obs->OnBeginFrame(missed_args); |
} |
void ExternalBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { |
@@ -345,4 +334,25 @@ void ExternalBeginFrameSource::OnBeginFrame(const BeginFrameArgs& args) { |
} |
} |
+bool ExternalBeginFrameSource::GetMissedBeginFrameArgs( |
+ BeginFrameObserver* obs, |
+ BeginFrameArgs* missed_args) { |
+ if (!last_begin_frame_args_.IsValid()) |
+ return false; |
+ |
+ const BeginFrameArgs& last_args = obs->LastUsedBeginFrameArgs(); |
+ if (last_args.IsValid() && |
+ last_begin_frame_args_.frame_time == last_args.frame_time) { |
+ return false; |
+ } |
+ |
+ DCHECK((last_begin_frame_args_.source_id != last_args.source_id) || |
+ (last_begin_frame_args_.sequence_number > last_args.sequence_number)) |
+ << "current " << last_begin_frame_args_.AsValue()->ToString() << ", last " |
+ << last_args.AsValue()->ToString(); |
+ *missed_args = last_begin_frame_args_; |
+ missed_args->type = BeginFrameArgs::MISSED; |
+ return true; |
+} |
+ |
} // namespace cc |