| 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/display_manager.h" | 5 #include "components/view_manager/display_manager.h" |
| 6 | 6 |
| 7 #include "base/numerics/safe_conversions.h" | 7 #include "base/numerics/safe_conversions.h" |
| 8 #include "components/view_manager/display_manager_factory.h" | 8 #include "components/view_manager/display_manager_factory.h" |
| 9 #include "components/view_manager/gles2/gpu_state.h" | 9 #include "components/view_manager/gles2/gpu_state.h" |
| 10 #include "components/view_manager/native_viewport/onscreen_context_provider.h" | 10 #include "components/view_manager/native_viewport/onscreen_context_provider.h" |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 native_viewport::PlatformViewport::Create(this, is_headless_).Pass(); | 112 native_viewport::PlatformViewport::Create(this, is_headless_).Pass(); |
| 113 platform_viewport_->Init(gfx::Rect(metrics_.size_in_pixels.To<gfx::Size>())); | 113 platform_viewport_->Init(gfx::Rect(metrics_.size_in_pixels.To<gfx::Size>())); |
| 114 platform_viewport_->Show(); | 114 platform_viewport_->Show(); |
| 115 | 115 |
| 116 mojo::ContextProviderPtr context_provider; | 116 mojo::ContextProviderPtr context_provider; |
| 117 context_provider_->Bind(GetProxy(&context_provider).Pass()); | 117 context_provider_->Bind(GetProxy(&context_provider).Pass()); |
| 118 mojo::DisplayFactoryPtr display_factory; | 118 mojo::DisplayFactoryPtr display_factory; |
| 119 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 119 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 120 request->url = mojo::String::From("mojo:surfaces_service"); | 120 request->url = mojo::String::From("mojo:surfaces_service"); |
| 121 app_impl_->ConnectToService(request.Pass(), &display_factory); | 121 app_impl_->ConnectToService(request.Pass(), &display_factory); |
| 122 // TODO(fsamuel): We should indicate to the delegate that this object failed |
| 123 // to initialize. |
| 124 if (!display_factory) |
| 125 return; |
| 122 display_factory->Create(context_provider.Pass(), | 126 display_factory->Create(context_provider.Pass(), |
| 123 nullptr, // returner - we never submit resources. | 127 nullptr, // returner - we never submit resources. |
| 124 GetProxy(&display_)); | 128 GetProxy(&display_)); |
| 125 } | 129 } |
| 126 | 130 |
| 127 DefaultDisplayManager::~DefaultDisplayManager() { | 131 DefaultDisplayManager::~DefaultDisplayManager() { |
| 128 // Destroy before |platform_viewport_| because this will destroy | 132 // Destroy before |platform_viewport_| because this will destroy |
| 129 // CommandBufferDriver objects that contain child windows. Otherwise if this | 133 // CommandBufferDriver objects that contain child windows. Otherwise if this |
| 130 // class destroys its window first, X errors will occur. | 134 // class destroys its window first, X errors will occur. |
| 131 context_provider_.reset(); | 135 context_provider_.reset(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 160 gfx::Rect rect(metrics_.size_in_pixels.To<gfx::Size>()); | 164 gfx::Rect rect(metrics_.size_in_pixels.To<gfx::Size>()); |
| 161 auto pass = mojo::CreateDefaultPass(1, rect); | 165 auto pass = mojo::CreateDefaultPass(1, rect); |
| 162 pass->damage_rect = Rect::From(dirty_rect_); | 166 pass->damage_rect = Rect::From(dirty_rect_); |
| 163 | 167 |
| 164 DrawViewTree(pass.get(), delegate_->GetRootView(), gfx::Vector2d(), 1.0f); | 168 DrawViewTree(pass.get(), delegate_->GetRootView(), gfx::Vector2d(), 1.0f); |
| 165 | 169 |
| 166 auto frame = mojo::Frame::New(); | 170 auto frame = mojo::Frame::New(); |
| 167 frame->passes.push_back(pass.Pass()); | 171 frame->passes.push_back(pass.Pass()); |
| 168 frame->resources.resize(0u); | 172 frame->resources.resize(0u); |
| 169 frame_pending_ = true; | 173 frame_pending_ = true; |
| 170 display_->SubmitFrame( | 174 if (display_) { |
| 171 frame.Pass(), | 175 display_->SubmitFrame( |
| 172 base::Bind(&DefaultDisplayManager::DidDraw, base::Unretained(this))); | 176 frame.Pass(), |
| 177 base::Bind(&DefaultDisplayManager::DidDraw, base::Unretained(this))); |
| 178 } |
| 173 dirty_rect_ = gfx::Rect(); | 179 dirty_rect_ = gfx::Rect(); |
| 174 } | 180 } |
| 175 | 181 |
| 176 void DefaultDisplayManager::DidDraw() { | 182 void DefaultDisplayManager::DidDraw() { |
| 177 frame_pending_ = false; | 183 frame_pending_ = false; |
| 178 if (!dirty_rect_.IsEmpty()) | 184 if (!dirty_rect_.IsEmpty()) |
| 179 WantToDraw(); | 185 WantToDraw(); |
| 180 } | 186 } |
| 181 | 187 |
| 182 void DefaultDisplayManager::WantToDraw() { | 188 void DefaultDisplayManager::WantToDraw() { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 | 225 |
| 220 metrics_.size_in_pixels = metrics.size_in_pixels.Clone(); | 226 metrics_.size_in_pixels = metrics.size_in_pixels.Clone(); |
| 221 metrics_.device_pixel_ratio = metrics.device_pixel_ratio; | 227 metrics_.device_pixel_ratio = metrics.device_pixel_ratio; |
| 222 } | 228 } |
| 223 | 229 |
| 224 void DefaultDisplayManager::OnDestroyed() { | 230 void DefaultDisplayManager::OnDestroyed() { |
| 225 delegate_->OnDisplayClosed(); | 231 delegate_->OnDisplayClosed(); |
| 226 } | 232 } |
| 227 | 233 |
| 228 } // namespace view_manager | 234 } // namespace view_manager |
| OLD | NEW |