Chromium Code Reviews| 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 |