Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1417)

Unified Diff: services/view_manager/display_manager.cc

Issue 878933005: Remove NativeViewportClient (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698