| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index 45cd0c8b4e809780b8779247ecd53aeea3aa2be2..a7af98350fd28eef53eb393b8b3b37f2b268f78c 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -172,7 +172,6 @@
|
| : client_(client),
|
| proxy_(proxy),
|
| current_begin_frame_tracker_(BEGINFRAMETRACKER_FROM_HERE),
|
| - output_surface_(nullptr),
|
| content_is_suitable_for_gpu_rasterization_(true),
|
| has_gpu_rasterization_trigger_(false),
|
| use_gpu_rasterization_(false),
|
| @@ -286,13 +285,6 @@
|
| }
|
|
|
| CleanUpTileManager();
|
| - renderer_ = nullptr;
|
| - resource_provider_ = nullptr;
|
| -
|
| - if (output_surface_) {
|
| - output_surface_->DetachFromClient();
|
| - output_surface_ = nullptr;
|
| - }
|
| }
|
|
|
| void LayerTreeHostImpl::BeginMainFrameAborted(CommitEarlyOutReason reason) {
|
| @@ -1570,7 +1562,7 @@
|
|
|
| scoped_ptr<SoftwareRenderer> temp_software_renderer =
|
| SoftwareRenderer::Create(this, &settings_.renderer_settings,
|
| - output_surface_, NULL);
|
| + output_surface_.get(), NULL);
|
| temp_software_renderer->DrawFrame(&frame->render_passes,
|
| device_scale_factor_,
|
| DeviceViewport(),
|
| @@ -1632,7 +1624,7 @@
|
|
|
| ContextProvider* context_provider =
|
| output_surface_->worker_context_provider();
|
| - ContextProvider::ScopedContextLock scoped_context(context_provider);
|
| + base::AutoLock context_lock(*context_provider->GetLock());
|
| if (!context_provider->GrContext())
|
| return false;
|
|
|
| @@ -2016,18 +2008,18 @@
|
| DCHECK(resource_provider_);
|
|
|
| if (output_surface_->capabilities().delegated_rendering) {
|
| - renderer_ =
|
| - DelegatingRenderer::Create(this, &settings_.renderer_settings,
|
| - output_surface_, resource_provider_.get());
|
| + renderer_ = DelegatingRenderer::Create(this, &settings_.renderer_settings,
|
| + output_surface_.get(),
|
| + resource_provider_.get());
|
| } else if (output_surface_->context_provider()) {
|
| renderer_ = GLRenderer::Create(
|
| - this, &settings_.renderer_settings, output_surface_,
|
| + this, &settings_.renderer_settings, output_surface_.get(),
|
| resource_provider_.get(), texture_mailbox_deleter_.get(),
|
| settings_.renderer_settings.highp_threshold_min);
|
| } else if (output_surface_->software_device()) {
|
| - renderer_ =
|
| - SoftwareRenderer::Create(this, &settings_.renderer_settings,
|
| - output_surface_, resource_provider_.get());
|
| + renderer_ = SoftwareRenderer::Create(this, &settings_.renderer_settings,
|
| + output_surface_.get(),
|
| + resource_provider_.get());
|
| }
|
| DCHECK(renderer_);
|
|
|
| @@ -2156,7 +2148,8 @@
|
| single_thread_synchronous_task_graph_runner_ = nullptr;
|
| }
|
|
|
| -bool LayerTreeHostImpl::InitializeRenderer(OutputSurface* output_surface) {
|
| +bool LayerTreeHostImpl::InitializeRenderer(
|
| + scoped_ptr<OutputSurface> output_surface) {
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::InitializeRenderer");
|
|
|
| // Since we will create a new resource provider, we cannot continue to use
|
| @@ -2168,14 +2161,7 @@
|
| renderer_ = nullptr;
|
| CleanUpTileManager();
|
| resource_provider_ = nullptr;
|
| -
|
| - // Detach from the old output surface and reset |output_surface_| pointer
|
| - // as this surface is going to be destroyed independent of if binding the
|
| - // new output surface succeeds or not.
|
| - if (output_surface_) {
|
| - output_surface_->DetachFromClient();
|
| - output_surface_ = nullptr;
|
| - }
|
| + output_surface_ = nullptr;
|
|
|
| if (!output_surface->BindToClient(this)) {
|
| // Avoid recreating tree resources because we might not have enough
|
| @@ -2184,9 +2170,9 @@
|
| return false;
|
| }
|
|
|
| - output_surface_ = output_surface;
|
| + output_surface_ = output_surface.Pass();
|
| resource_provider_ = ResourceProvider::Create(
|
| - output_surface_, shared_bitmap_manager_, gpu_memory_buffer_manager_,
|
| + output_surface_.get(), shared_bitmap_manager_, gpu_memory_buffer_manager_,
|
| proxy_->blocking_main_thread_task_runner(),
|
| settings_.renderer_settings.highp_threshold_min,
|
| settings_.renderer_settings.use_rgba_4444_textures,
|
|
|