| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/view_manager/server_view.h" | 5 #include "components/mus/server_view.h" |
| 6 | 6 |
| 7 #include <inttypes.h> | 7 #include <inttypes.h> |
| 8 | 8 |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "components/view_manager/server_view_delegate.h" | 10 #include "components/mus/server_view_delegate.h" |
| 11 #include "components/view_manager/server_view_observer.h" | 11 #include "components/mus/server_view_observer.h" |
| 12 #include "components/view_manager/surfaces/surfaces_state.h" | 12 #include "components/mus/surfaces/surfaces_state.h" |
| 13 #include "mojo/converters/geometry/geometry_type_converters.h" | 13 #include "mojo/converters/geometry/geometry_type_converters.h" |
| 14 #include "mojo/converters/surfaces/surfaces_type_converters.h" | 14 #include "mojo/converters/surfaces/surfaces_type_converters.h" |
| 15 | 15 |
| 16 namespace view_manager { | 16 namespace view_manager { |
| 17 | 17 |
| 18 namespace { | 18 namespace { |
| 19 | 19 |
| 20 void CallCallback(const mojo::Closure& callback, cc::SurfaceDrawStatus status) { | 20 void CallCallback(const mojo::Closure& callback, cc::SurfaceDrawStatus status) { |
| 21 callback.Run(); | 21 callback.Run(); |
| 22 } | 22 } |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 void ServerView::SubmitCompositorFrame( | 249 void ServerView::SubmitCompositorFrame( |
| 250 mojo::CompositorFramePtr frame, | 250 mojo::CompositorFramePtr frame, |
| 251 const SubmitCompositorFrameCallback& callback) { | 251 const SubmitCompositorFrameCallback& callback) { |
| 252 gfx::Size frame_size = frame->passes[0]->output_rect.To<gfx::Rect>().size(); | 252 gfx::Size frame_size = frame->passes[0]->output_rect.To<gfx::Rect>().size(); |
| 253 // Create Surfaces state on demand. | 253 // Create Surfaces state on demand. |
| 254 if (!surface_factory_) { | 254 if (!surface_factory_) { |
| 255 surface_factory_.reset( | 255 surface_factory_.reset( |
| 256 new cc::SurfaceFactory(delegate_->GetSurfacesState()->manager(), this)); | 256 new cc::SurfaceFactory(delegate_->GetSurfacesState()->manager(), this)); |
| 257 } | 257 } |
| 258 if (!surface_id_allocator_) { | 258 if (!surface_id_allocator_) { |
| 259 surface_id_allocator_.reset( | 259 surface_id_allocator_.reset(new cc::SurfaceIdAllocator( |
| 260 new cc::SurfaceIdAllocator( | 260 delegate_->GetSurfacesState()->next_id_namespace())); |
| 261 delegate_->GetSurfacesState()->next_id_namespace())); | |
| 262 } | 261 } |
| 263 if (surface_id().is_null()) { | 262 if (surface_id().is_null()) { |
| 264 // Create a Surface ID for the first time for this view. | 263 // Create a Surface ID for the first time for this view. |
| 265 cc::SurfaceId surface_id(surface_id_allocator_->GenerateId()); | 264 cc::SurfaceId surface_id(surface_id_allocator_->GenerateId()); |
| 266 surface_factory_->Create(surface_id); | 265 surface_factory_->Create(surface_id); |
| 267 SetSurfaceId(surface_id); | 266 SetSurfaceId(surface_id); |
| 268 } else { | 267 } else { |
| 269 // If the size of the CompostiorFrame has changed then destroy the existing | 268 // If the size of the CompostiorFrame has changed then destroy the existing |
| 270 // Surface and create a new one of the appropriate size. | 269 // Surface and create a new one of the appropriate size. |
| 271 if (frame_size != last_submitted_frame_size()) { | 270 if (frame_size != last_submitted_frame_size()) { |
| 272 surface_factory_->Destroy(surface_id()); | 271 surface_factory_->Destroy(surface_id()); |
| 273 cc::SurfaceId surface_id(surface_id_allocator_->GenerateId()); | 272 cc::SurfaceId surface_id(surface_id_allocator_->GenerateId()); |
| 274 surface_factory_->Create(surface_id); | 273 surface_factory_->Create(surface_id); |
| 275 SetSurfaceId(surface_id); | 274 SetSurfaceId(surface_id); |
| 276 } | 275 } |
| 277 } | 276 } |
| 278 surface_factory_->SubmitCompositorFrame( | 277 surface_factory_->SubmitCompositorFrame( |
| 279 surface_id(), | 278 surface_id(), delegate_->UpdateViewTreeFromCompositorFrame(frame), |
| 280 delegate_->UpdateViewTreeFromCompositorFrame(frame), | |
| 281 base::Bind(&CallCallback, callback)); | 279 base::Bind(&CallCallback, callback)); |
| 282 delegate_->GetSurfacesState()->scheduler()->SetNeedsDraw(); | 280 delegate_->GetSurfacesState()->scheduler()->SetNeedsDraw(); |
| 283 last_submitted_frame_size_ = frame_size; | 281 last_submitted_frame_size_ = frame_size; |
| 284 } | 282 } |
| 285 | 283 |
| 286 #if !defined(NDEBUG) | 284 #if !defined(NDEBUG) |
| 287 std::string ServerView::GetDebugWindowHierarchy() const { | 285 std::string ServerView::GetDebugWindowHierarchy() const { |
| 288 std::string result; | 286 std::string result; |
| 289 BuildDebugInfo(std::string(), &result); | 287 BuildDebugInfo(std::string(), &result); |
| 290 return result; | 288 return result; |
| 291 } | 289 } |
| 292 | 290 |
| 293 void ServerView::BuildDebugInfo(const std::string& depth, | 291 void ServerView::BuildDebugInfo(const std::string& depth, |
| 294 std::string* result) const { | 292 std::string* result) const { |
| 295 *result += base::StringPrintf( | 293 *result += base::StringPrintf( |
| 296 "%sid=%d,%d visible=%s bounds=%d,%d %dx%d surface_id=%" PRIu64 "\n", | 294 "%sid=%d,%d visible=%s bounds=%d,%d %dx%d surface_id=%" PRIu64 "\n", |
| 297 depth.c_str(), static_cast<int>(id_.connection_id), | 295 depth.c_str(), static_cast<int>(id_.connection_id), |
| 298 static_cast<int>(id_.view_id), visible_ ? "true" : "false", bounds_.x(), | 296 static_cast<int>(id_.view_id), visible_ ? "true" : "false", bounds_.x(), |
| 299 bounds_.y(), bounds_.width(), bounds_.height(), surface_id_.id); | 297 bounds_.y(), bounds_.width(), bounds_.height(), surface_id_.id); |
| 300 for (const ServerView* child : children_) | 298 for (const ServerView* child : children_) |
| 301 child->BuildDebugInfo(depth + " ", result); | 299 child->BuildDebugInfo(depth + " ", result); |
| 302 } | 300 } |
| 303 #endif | 301 #endif |
| 304 | 302 |
| 305 void ServerView::ReturnResources( | 303 void ServerView::ReturnResources(const cc::ReturnedResourceArray& resources) { |
| 306 const cc::ReturnedResourceArray& resources) { | |
| 307 if (!client_) | 304 if (!client_) |
| 308 return; | 305 return; |
| 309 client_->ReturnResources( | 306 client_->ReturnResources( |
| 310 mojo::Array<mojo::ReturnedResourcePtr>::From(resources)); | 307 mojo::Array<mojo::ReturnedResourcePtr>::From(resources)); |
| 311 } | 308 } |
| 312 | 309 |
| 313 void ServerView::RemoveImpl(ServerView* view) { | 310 void ServerView::RemoveImpl(ServerView* view) { |
| 314 view->parent_ = NULL; | 311 view->parent_ = NULL; |
| 315 children_.erase(std::find(children_.begin(), children_.end(), view)); | 312 children_.erase(std::find(children_.begin(), children_.end(), view)); |
| 316 } | 313 } |
| 317 | 314 |
| 318 } // namespace view_manager | 315 } // namespace view_manager |
| OLD | NEW |