| Index: services/surfaces/display_impl.cc
|
| diff --git a/services/surfaces/display_impl.cc b/services/surfaces/display_impl.cc
|
| index 217ebc5d70488fbcc7bf83cf55ad86e2b790b836..4d99b5c6f459670e7d6f186c3e75ef6404410e83 100644
|
| --- a/services/surfaces/display_impl.cc
|
| +++ b/services/surfaces/display_impl.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "services/surfaces/display_impl.h"
|
|
|
| +#include "base/bind.h"
|
| #include "cc/output/compositor_frame.h"
|
| #include "cc/surfaces/display.h"
|
| #include "mojo/converters/geometry/geometry_type_converters.h"
|
| @@ -33,6 +34,9 @@ DisplayImpl::DisplayImpl(cc::SurfaceManager* manager,
|
| returner_(returner.Pass()),
|
| viewport_param_binding_(this),
|
| display_binding_(this, display_request.Pass()) {
|
| + context_provider_->NotifyOnViewportCreated(
|
| + base::Bind(&DisplayImpl::OnViewportCreated, base::Unretained(this)));
|
| +
|
| mojo::ViewportParameterListenerPtr viewport_parameter_listener;
|
| viewport_param_binding_.Bind(GetProxy(&viewport_parameter_listener));
|
| context_provider_->Create(
|
| @@ -77,14 +81,21 @@ void DisplayImpl::Draw() {
|
| pending_frame_->passes[0]->output_rect.To<gfx::Rect>().size();
|
| last_submitted_frame_size_ = frame_size;
|
| display_->Resize(frame_size);
|
| - factory_.SubmitFrame(cc_id_,
|
| - pending_frame_.To<scoped_ptr<cc::CompositorFrame>>(),
|
| - base::Bind(&CallCallback, pending_callback_));
|
| + factory_.SubmitFrame(
|
| + cc_id_, pending_frame_.Clone().To<scoped_ptr<cc::CompositorFrame>>(),
|
| + base::Bind(&CallCallback, pending_callback_));
|
| scheduler_->SetNeedsDraw();
|
| - pending_frame_.reset();
|
| pending_callback_.reset();
|
| }
|
|
|
| +void DisplayImpl::OnViewportCreated() {
|
| + if (display_ && pending_frame_) {
|
| + Draw();
|
| + }
|
| + context_provider_->NotifyOnViewportCreated(
|
| + base::Bind(&DisplayImpl::OnViewportCreated, base::Unretained(this)));
|
| +}
|
| +
|
| void DisplayImpl::DisplayDamaged() {
|
| }
|
|
|
|
|