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 |