| 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 "cc/surfaces/display.h" | 5 #include "cc/surfaces/display.h" |
| 6 | 6 |
| 7 #include "base/thread_task_runner_handle.h" | 7 #include "base/thread_task_runner_handle.h" |
| 8 #include "base/trace_event/trace_event.h" | 8 #include "base/trace_event/trace_event.h" |
| 9 #include "cc/debug/benchmark_instrumentation.h" | 9 #include "cc/debug/benchmark_instrumentation.h" |
| 10 #include "cc/output/compositor_frame.h" | 10 #include "cc/output/compositor_frame.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 for (const auto& id_entry : aggregator_->previous_contained_surfaces()) { | 47 for (const auto& id_entry : aggregator_->previous_contained_surfaces()) { |
| 48 Surface* surface = manager_->GetSurfaceForId(id_entry.first); | 48 Surface* surface = manager_->GetSurfaceForId(id_entry.first); |
| 49 if (surface) | 49 if (surface) |
| 50 surface->RunDrawCallbacks(SurfaceDrawStatus::DRAW_SKIPPED); | 50 surface->RunDrawCallbacks(SurfaceDrawStatus::DRAW_SKIPPED); |
| 51 } | 51 } |
| 52 } | 52 } |
| 53 } | 53 } |
| 54 | 54 |
| 55 bool Display::Initialize(scoped_ptr<OutputSurface> output_surface, | 55 bool Display::Initialize(scoped_ptr<OutputSurface> output_surface, |
| 56 DisplayScheduler* scheduler) { | 56 DisplayScheduler* scheduler) { |
| 57 output_surface_ = output_surface.Pass(); | 57 output_surface_ = std::move(output_surface); |
| 58 scheduler_ = scheduler; | 58 scheduler_ = scheduler; |
| 59 return output_surface_->BindToClient(this); | 59 return output_surface_->BindToClient(this); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void Display::SetSurfaceId(SurfaceId id, float device_scale_factor) { | 62 void Display::SetSurfaceId(SurfaceId id, float device_scale_factor) { |
| 63 if (current_surface_id_ == id && device_scale_factor_ == device_scale_factor) | 63 if (current_surface_id_ == id && device_scale_factor_ == device_scale_factor) |
| 64 return; | 64 return; |
| 65 | 65 |
| 66 TRACE_EVENT0("cc", "Display::SetSurfaceId"); | 66 TRACE_EVENT0("cc", "Display::SetSurfaceId"); |
| 67 | 67 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 GL_TEXTURE_2D)); | 111 GL_TEXTURE_2D)); |
| 112 if (!resource_provider) | 112 if (!resource_provider) |
| 113 return; | 113 return; |
| 114 | 114 |
| 115 if (output_surface_->context_provider()) { | 115 if (output_surface_->context_provider()) { |
| 116 scoped_ptr<GLRenderer> renderer = GLRenderer::Create( | 116 scoped_ptr<GLRenderer> renderer = GLRenderer::Create( |
| 117 this, &settings_, output_surface_.get(), resource_provider.get(), | 117 this, &settings_, output_surface_.get(), resource_provider.get(), |
| 118 texture_mailbox_deleter_.get(), settings_.highp_threshold_min); | 118 texture_mailbox_deleter_.get(), settings_.highp_threshold_min); |
| 119 if (!renderer) | 119 if (!renderer) |
| 120 return; | 120 return; |
| 121 renderer_ = renderer.Pass(); | 121 renderer_ = std::move(renderer); |
| 122 } else { | 122 } else { |
| 123 scoped_ptr<SoftwareRenderer> renderer = SoftwareRenderer::Create( | 123 scoped_ptr<SoftwareRenderer> renderer = SoftwareRenderer::Create( |
| 124 this, &settings_, output_surface_.get(), resource_provider.get()); | 124 this, &settings_, output_surface_.get(), resource_provider.get()); |
| 125 if (!renderer) | 125 if (!renderer) |
| 126 return; | 126 return; |
| 127 renderer_ = renderer.Pass(); | 127 renderer_ = std::move(renderer); |
| 128 } | 128 } |
| 129 | 129 |
| 130 resource_provider_ = resource_provider.Pass(); | 130 resource_provider_ = std::move(resource_provider); |
| 131 // TODO(jbauman): Outputting an incomplete quad list doesn't work when using | 131 // TODO(jbauman): Outputting an incomplete quad list doesn't work when using |
| 132 // overlays. | 132 // overlays. |
| 133 bool output_partial_list = renderer_->Capabilities().using_partial_swap && | 133 bool output_partial_list = renderer_->Capabilities().using_partial_swap && |
| 134 !output_surface_->GetOverlayCandidateValidator(); | 134 !output_surface_->GetOverlayCandidateValidator(); |
| 135 aggregator_.reset(new SurfaceAggregator( | 135 aggregator_.reset(new SurfaceAggregator( |
| 136 this, manager_, resource_provider_.get(), output_partial_list)); | 136 this, manager_, resource_provider_.get(), output_partial_list)); |
| 137 } | 137 } |
| 138 | 138 |
| 139 void Display::DidLoseOutputSurface() { | 139 void Display::DidLoseOutputSurface() { |
| 140 if (scheduler_) | 140 if (scheduler_) |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 | 353 |
| 354 if (surface_id == current_surface_id_) | 354 if (surface_id == current_surface_id_) |
| 355 UpdateRootSurfaceResourcesLocked(); | 355 UpdateRootSurfaceResourcesLocked(); |
| 356 } | 356 } |
| 357 | 357 |
| 358 SurfaceId Display::CurrentSurfaceId() { | 358 SurfaceId Display::CurrentSurfaceId() { |
| 359 return current_surface_id_; | 359 return current_surface_id_; |
| 360 } | 360 } |
| 361 | 361 |
| 362 } // namespace cc | 362 } // namespace cc |
| OLD | NEW |