| Index: services/view_manager/display_manager.cc
|
| diff --git a/services/view_manager/display_manager.cc b/services/view_manager/display_manager.cc
|
| index 2c312c752e9c5fac587b36d9b30d3561cf609a87..f943644224c236db2ff19c65ae58c04fab9d8093 100644
|
| --- a/services/view_manager/display_manager.cc
|
| +++ b/services/view_manager/display_manager.cc
|
| @@ -91,7 +91,7 @@ void DefaultDisplayManager::Init(ConnectionManager* connection_manager) {
|
| connection_manager_ = connection_manager;
|
| app_connection_->ConnectToService("mojo:native_viewport_service",
|
| &native_viewport_);
|
| - native_viewport_.set_client(this);
|
| + native_viewport_.set_error_handler(this);
|
| native_viewport_->Create(
|
| metrics_.size->Clone(),
|
| base::Bind(&DefaultDisplayManager::OnCreatedNativeViewport,
|
| @@ -134,7 +134,9 @@ const mojo::ViewportMetrics& DefaultDisplayManager::GetViewportMetrics() {
|
| }
|
|
|
| void DefaultDisplayManager::OnCreatedNativeViewport(
|
| - uint64_t native_viewport_id) {
|
| + uint64_t native_viewport_id,
|
| + mojo::ViewportMetricsPtr metrics) {
|
| + OnMetricsChanged(metrics.Pass());
|
| }
|
|
|
| void DefaultDisplayManager::Draw() {
|
| @@ -166,14 +168,8 @@ void DefaultDisplayManager::Draw() {
|
| native_viewport_->SubmittedFrame(qualified_id.Pass());
|
| }
|
|
|
| -void DefaultDisplayManager::OnDestroyed() {
|
| - // This is called when the native_viewport is torn down before
|
| - // ~DefaultDisplayManager may be called.
|
| - native_viewport_closed_callback_.Run();
|
| -}
|
| -
|
| void DefaultDisplayManager::OnMetricsChanged(mojo::ViewportMetricsPtr metrics) {
|
| - metrics_.size = metrics->size.Pass();
|
| + metrics_.size = metrics->size.Clone();
|
| metrics_.device_pixel_ratio = metrics->device_pixel_ratio;
|
| gfx::Rect bounds(metrics_.size.To<gfx::Size>());
|
| connection_manager_->root()->SetBounds(bounds);
|
| @@ -182,6 +178,8 @@ void DefaultDisplayManager::OnMetricsChanged(mojo::ViewportMetricsPtr metrics) {
|
| surface_->DestroySurface(kLocalSurfaceID);
|
| surface_allocated_ = false;
|
| SchedulePaint(connection_manager_->root(), bounds);
|
| + native_viewport_->RequestMetrics(base::Bind(
|
| + &DefaultDisplayManager::OnMetricsChanged, weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| void DefaultDisplayManager::SetIdNamespace(uint32_t id_namespace) {
|
| @@ -199,4 +197,10 @@ void DefaultDisplayManager::ReturnResources(
|
| DCHECK_EQ(0u, resources.size());
|
| }
|
|
|
| +void DefaultDisplayManager::OnConnectionError() {
|
| + // This is called when the native_viewport is torn down before
|
| + // ~DefaultDisplayManager may be called.
|
| + native_viewport_closed_callback_.Run();
|
| +}
|
| +
|
| } // namespace view_manager
|
|
|