| 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 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 // Send a MISSED begin frame if necessary. | 357 // Send a MISSED begin frame if necessary. |
| 358 if (missed_begin_frame_args_.IsValid()) { | 358 if (missed_begin_frame_args_.IsValid()) { |
| 359 const BeginFrameArgs& last_args = obs->LastUsedBeginFrameArgs(); | 359 const BeginFrameArgs& last_args = obs->LastUsedBeginFrameArgs(); |
| 360 if (!last_args.IsValid() || | 360 if (!last_args.IsValid() || |
| 361 (missed_begin_frame_args_.frame_time > last_args.frame_time)) { | 361 (missed_begin_frame_args_.frame_time > last_args.frame_time)) { |
| 362 DCHECK((missed_begin_frame_args_.source_id != last_args.source_id) || | 362 DCHECK((missed_begin_frame_args_.source_id != last_args.source_id) || |
| 363 (missed_begin_frame_args_.sequence_number > | 363 (missed_begin_frame_args_.sequence_number > |
| 364 last_args.sequence_number)) | 364 last_args.sequence_number)) |
| 365 << "current " << missed_begin_frame_args_.AsValue()->ToString() | 365 << "current " << missed_begin_frame_args_.AsValue()->ToString() |
| 366 << ", last " << last_args.AsValue()->ToString(); | 366 << ", last " << last_args.AsValue()->ToString(); |
| 367 obs->OnBeginFrame(missed_begin_frame_args_); | 367 // Avoid issuing missed BeginFrames with a past deadline. |
| 368 if (missed_begin_frame_args_.deadline.is_null() || |
| 369 missed_begin_frame_args_.deadline > Now()) { |
| 370 obs->OnBeginFrame(missed_begin_frame_args_); |
| 371 } |
| 368 } | 372 } |
| 369 } | 373 } |
| 370 } | 374 } |
| 371 | 375 |
| 372 void ExternalBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { | 376 void ExternalBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { |
| 373 DCHECK(obs); | 377 DCHECK(obs); |
| 374 DCHECK(observers_.find(obs) != observers_.end()); | 378 DCHECK(observers_.find(obs) != observers_.end()); |
| 375 | 379 |
| 376 observers_.erase(obs); | 380 observers_.erase(obs); |
| 377 ack_tracker_.OnObserverRemoved(obs); | 381 ack_tracker_.OnObserverRemoved(obs); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 void ExternalBeginFrameSource::FinishFrame() { | 439 void ExternalBeginFrameSource::FinishFrame() { |
| 436 frame_active_ = false; | 440 frame_active_ = false; |
| 437 | 441 |
| 438 BeginFrameAck ack(missed_begin_frame_args_.source_id, | 442 BeginFrameAck ack(missed_begin_frame_args_.source_id, |
| 439 missed_begin_frame_args_.sequence_number, | 443 missed_begin_frame_args_.sequence_number, |
| 440 ack_tracker_.LatestConfirmedSequenceNumber(), 0, | 444 ack_tracker_.LatestConfirmedSequenceNumber(), 0, |
| 441 ack_tracker_.AnyObserversHadDamage()); | 445 ack_tracker_.AnyObserversHadDamage()); |
| 442 client_->OnDidFinishFrame(ack); | 446 client_->OnDidFinishFrame(ack); |
| 443 } | 447 } |
| 444 | 448 |
| 449 base::TimeTicks ExternalBeginFrameSource::Now() const { |
| 450 return base::TimeTicks::Now(); |
| 451 } |
| 452 |
| 445 } // namespace cc | 453 } // namespace cc |
| OLD | NEW |