| Index: cc/surfaces/display.cc
|
| diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
|
| index 71420e5183ffdac4703b289571af66f6af879dd3..c0c8b14e007ae0348be81093d9053f5f96c194c9 100644
|
| --- a/cc/surfaces/display.cc
|
| +++ b/cc/surfaces/display.cc
|
| @@ -15,7 +15,6 @@
|
| #include "cc/output/gl_renderer.h"
|
| #include "cc/output/renderer_settings.h"
|
| #include "cc/output/software_renderer.h"
|
| -#include "cc/output/texture_mailbox_deleter.h"
|
| #include "cc/surfaces/display_client.h"
|
| #include "cc/surfaces/display_scheduler.h"
|
| #include "cc/surfaces/surface.h"
|
| @@ -42,22 +41,21 @@ class EmptyBeginFrameSource : public cc::BeginFrameSource {
|
|
|
| namespace cc {
|
|
|
| -Display::Display(DisplayClient* client,
|
| - SurfaceManager* manager,
|
| +Display::Display(SurfaceManager* manager,
|
| SharedBitmapManager* bitmap_manager,
|
| gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
|
| const RendererSettings& settings,
|
| - uint32_t compositor_surface_namespace)
|
| - : client_(client),
|
| - surface_manager_(manager),
|
| + uint32_t compositor_surface_namespace,
|
| + base::SingleThreadTaskRunner* task_runner,
|
| + std::unique_ptr<OutputSurface> output_surface)
|
| + : surface_manager_(manager),
|
| bitmap_manager_(bitmap_manager),
|
| gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
|
| settings_(settings),
|
| compositor_surface_namespace_(compositor_surface_namespace),
|
| - device_scale_factor_(1.f),
|
| - swapped_since_resize_(false),
|
| - vsync_begin_frame_source_(nullptr),
|
| - observed_begin_frame_source_(nullptr) {
|
| + task_runner_(task_runner),
|
| + output_surface_(std::move(output_surface)),
|
| + texture_mailbox_deleter_(task_runner) {
|
| surface_manager_->AddObserver(this);
|
| }
|
|
|
| @@ -74,9 +72,9 @@ Display::~Display() {
|
| }
|
| }
|
|
|
| -void Display::CreateScheduler(base::SingleThreadTaskRunner* task_runner) {
|
| +void Display::CreateScheduler() {
|
| DCHECK(!scheduler_);
|
| - if (!task_runner) {
|
| + if (!task_runner_) {
|
| // WebView doesn't have a task runner or a real begin frame source,
|
| // so just create something fake here.
|
| internal_begin_frame_source_.reset(new EmptyBeginFrameSource());
|
| @@ -88,37 +86,30 @@ void Display::CreateScheduler(base::SingleThreadTaskRunner* task_runner) {
|
| observed_begin_frame_source_ = vsync_begin_frame_source_;
|
| if (settings_.disable_display_vsync) {
|
| internal_begin_frame_source_.reset(
|
| - new BackToBackBeginFrameSource(task_runner));
|
| + new BackToBackBeginFrameSource(task_runner_));
|
| observed_begin_frame_source_ = internal_begin_frame_source_.get();
|
| }
|
| }
|
|
|
| scheduler_.reset(
|
| - new DisplayScheduler(this, observed_begin_frame_source_, task_runner,
|
| + new DisplayScheduler(this, observed_begin_frame_source_, task_runner_,
|
| output_surface_->capabilities().max_frames_pending));
|
| surface_manager_->RegisterBeginFrameSource(observed_begin_frame_source_,
|
| compositor_surface_namespace_);
|
| }
|
|
|
| -bool Display::Initialize(std::unique_ptr<OutputSurface> output_surface,
|
| - base::SingleThreadTaskRunner* task_runner) {
|
| - DCHECK(!output_surface_);
|
| - output_surface_ = std::move(output_surface);
|
| +bool Display::Initialize(DisplayClient* client) {
|
| + client_ = client;
|
| if (!output_surface_->BindToClient(this))
|
| return false;
|
| - texture_mailbox_deleter_.reset(new TextureMailboxDeleter(task_runner));
|
| - CreateScheduler(task_runner);
|
| + CreateScheduler();
|
| return true;
|
| }
|
|
|
| -bool Display::InitializeSynchronous(
|
| - std::unique_ptr<OutputSurface> output_surface,
|
| - base::SingleThreadTaskRunner* task_runner) {
|
| - DCHECK(!output_surface_);
|
| - output_surface_ = std::move(output_surface);
|
| +bool Display::InitializeSynchronous(DisplayClient* client) {
|
| + client_ = client;
|
| if (!output_surface_->BindToClient(this))
|
| return false;
|
| - texture_mailbox_deleter_.reset(new TextureMailboxDeleter(task_runner));
|
| // No scheduler created here.
|
| return true;
|
| }
|
| @@ -191,7 +182,7 @@ void Display::InitializeRenderer() {
|
| if (output_surface_->context_provider()) {
|
| std::unique_ptr<GLRenderer> renderer = GLRenderer::Create(
|
| this, &settings_, output_surface_.get(), resource_provider.get(),
|
| - texture_mailbox_deleter_.get(), settings_.highp_threshold_min);
|
| + &texture_mailbox_deleter_, settings_.highp_threshold_min);
|
| if (!renderer)
|
| return;
|
| renderer_ = std::move(renderer);
|
| @@ -199,7 +190,7 @@ void Display::InitializeRenderer() {
|
| #if defined(ENABLE_VULKAN)
|
| std::unique_ptr<VulkanRenderer> renderer = VulkanRenderer::Create(
|
| this, &settings_, output_surface_.get(), resource_provider.get(),
|
| - texture_mailbox_deleter_.get(), settings_.highp_threshold_min);
|
| + &texture_mailbox_deleter_, settings_.highp_threshold_min);
|
| if (!renderer)
|
| return;
|
| renderer_ = std::move(renderer);
|
| @@ -232,7 +223,7 @@ void Display::DidLoseOutputSurface() {
|
| scheduler_->OutputSurfaceLost();
|
| // WARNING: The client may delete the Display in this method call. Do not
|
| // make any additional references to members after this call.
|
| - client_->OutputSurfaceLost();
|
| + client_->DisplayOutputSurfaceLost();
|
| }
|
|
|
| void Display::UpdateRootSurfaceResourcesLocked() {
|
| @@ -376,7 +367,7 @@ void Display::SetBeginFrameSource(BeginFrameSource* source) {
|
| }
|
|
|
| void Display::SetMemoryPolicy(const ManagedMemoryPolicy& policy) {
|
| - client_->SetMemoryPolicy(policy);
|
| + client_->DisplaySetMemoryPolicy(policy);
|
| }
|
|
|
| void Display::OnDraw(const gfx::Transform& transform,
|
|
|