| Index: cc/surfaces/display.cc
|
| diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
|
| index a0ffb2ce35fce3f46f4c5674d1de15016926f006..36fdddbe2a8630a99177fcb28541ba03d589e919 100644
|
| --- a/cc/surfaces/display.cc
|
| +++ b/cc/surfaces/display.cc
|
| @@ -42,15 +42,18 @@ Display::Display(SharedBitmapManager* bitmap_manager,
|
| gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
|
| settings_(settings),
|
| frame_sink_id_(frame_sink_id),
|
| - begin_frame_source_(std::move(begin_frame_source)),
|
| + begin_frame_source_(
|
| + new DisplayBeginFrameSource(std::move(begin_frame_source))),
|
| output_surface_(std::move(output_surface)),
|
| scheduler_(std::move(scheduler)),
|
| texture_mailbox_deleter_(std::move(texture_mailbox_deleter)) {
|
| DCHECK(output_surface_);
|
| - DCHECK_EQ(!scheduler_, !begin_frame_source_);
|
| + DCHECK_EQ(!scheduler_, !begin_frame_source_->GetWrappedSource());
|
| DCHECK(frame_sink_id_.is_valid());
|
| - if (scheduler_)
|
| + if (scheduler_) {
|
| scheduler_->SetClient(this);
|
| + scheduler_->SetBeginFrameSource(begin_frame_source_.get());
|
| + }
|
| }
|
|
|
| Display::~Display() {
|
| @@ -58,8 +61,7 @@ Display::~Display() {
|
| if (client_) {
|
| if (auto* context = output_surface_->context_provider())
|
| context->SetLostContextCallback(base::Closure());
|
| - if (begin_frame_source_)
|
| - surface_manager_->UnregisterBeginFrameSource(begin_frame_source_.get());
|
| + surface_manager_->UnregisterBeginFrameSource(begin_frame_source_.get());
|
| surface_manager_->RemoveObserver(this);
|
| }
|
| if (aggregator_) {
|
| @@ -82,10 +84,8 @@ void Display::Initialize(DisplayClient* client,
|
|
|
| // This must be done in Initialize() so that the caller can delay this until
|
| // they are ready to receive a BeginFrameSource.
|
| - if (begin_frame_source_) {
|
| - surface_manager_->RegisterBeginFrameSource(begin_frame_source_.get(),
|
| - frame_sink_id_);
|
| - }
|
| + surface_manager_->RegisterBeginFrameSource(begin_frame_source_.get(),
|
| + frame_sink_id_);
|
|
|
| output_surface_->BindToClient(this);
|
| InitializeRenderer();
|
| @@ -403,4 +403,9 @@ void Display::ForceImmediateDrawAndSwapIfPossible() {
|
| scheduler_->ForceImmediateSwapIfPossible();
|
| }
|
|
|
| +void Display::SwapBeginFrameSource(
|
| + std::unique_ptr<BeginFrameSource>* begin_frame_source) {
|
| + begin_frame_source_->SwapWrappedSource(begin_frame_source);
|
| +}
|
| +
|
| } // namespace cc
|
|
|