| Index: cc/surfaces/display.cc
|
| diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
|
| index 7ec46727385581123b61289e353b1d6d98821024..9262e5341d0b01a99ac7634948aaa23771dd81fe 100644
|
| --- a/cc/surfaces/display.cc
|
| +++ b/cc/surfaces/display.cc
|
| @@ -15,6 +15,7 @@
|
| #include "cc/output/software_renderer.h"
|
| #include "cc/resources/texture_mailbox_deleter.h"
|
| #include "cc/surfaces/display_client.h"
|
| +#include "cc/surfaces/display_scheduler.h"
|
| #include "cc/surfaces/surface.h"
|
| #include "cc/surfaces/surface_aggregator.h"
|
| #include "cc/surfaces/surface_manager.h"
|
| @@ -33,6 +34,7 @@ Display::Display(DisplayClient* client,
|
| gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
|
| settings_(settings),
|
| device_scale_factor_(1.f),
|
| + scheduler_(nullptr),
|
| blocking_main_thread_task_runner_(
|
| BlockingTaskRunner::Create(base::MessageLoopProxy::current())),
|
| texture_mailbox_deleter_(
|
| @@ -51,15 +53,18 @@ Display::~Display() {
|
| }
|
| }
|
|
|
| -bool Display::Initialize(scoped_ptr<OutputSurface> output_surface) {
|
| +bool Display::Initialize(scoped_ptr<OutputSurface> output_surface,
|
| + DisplayScheduler* scheduler) {
|
| output_surface_ = output_surface.Pass();
|
| + scheduler_ = scheduler;
|
| return output_surface_->BindToClient(this);
|
| }
|
|
|
| void Display::SetSurfaceId(SurfaceId id, float device_scale_factor) {
|
| current_surface_id_ = id;
|
| device_scale_factor_ = device_scale_factor;
|
| - client_->DisplayDamaged();
|
| + if (scheduler_)
|
| + scheduler_->DisplayDamaged();
|
| }
|
|
|
| void Display::Resize(const gfx::Size& size) {
|
| @@ -70,7 +75,8 @@ void Display::Resize(const gfx::Size& size) {
|
| if (renderer_ && settings_.finish_rendering_on_resize)
|
| renderer_->Finish();
|
| current_surface_size_ = size;
|
| - client_->DisplayDamaged();
|
| + if (scheduler_)
|
| + scheduler_->DisplayDamaged();
|
| }
|
|
|
| void Display::InitializeRenderer() {
|
| @@ -106,6 +112,7 @@ void Display::InitializeRenderer() {
|
|
|
| void Display::DidLoseOutputSurface() {
|
| client_->OutputSurfaceLost();
|
| + scheduler_->OutputSurfaceLost();
|
| }
|
|
|
| bool Display::Draw() {
|
| @@ -180,16 +187,17 @@ bool Display::Draw() {
|
| }
|
|
|
| void Display::DidSwapBuffers() {
|
| - client_->DidSwapBuffers();
|
| + scheduler_->DidSwapBuffers();
|
| }
|
|
|
| void Display::DidSwapBuffersComplete() {
|
| - client_->DidSwapBuffersComplete();
|
| + scheduler_->DidSwapBuffersComplete();
|
| }
|
|
|
| void Display::CommitVSyncParameters(base::TimeTicks timebase,
|
| base::TimeDelta interval) {
|
| client_->CommitVSyncParameters(timebase, interval);
|
| + scheduler_->CommitVSyncParameters(timebase, interval);
|
| }
|
|
|
| void Display::SetMemoryPolicy(const ManagedMemoryPolicy& policy) {
|
| @@ -206,10 +214,10 @@ void Display::OnSurfaceDamaged(SurfaceId surface_id, bool* changed) {
|
| !current_frame->delegated_frame_data->resource_list.size())
|
| aggregator_->ReleaseResources(surface_id);
|
| }
|
| - client_->DisplayDamaged();
|
| + scheduler_->DisplayDamaged();
|
| *changed = true;
|
| } else if (surface_id == current_surface_id_) {
|
| - client_->DisplayDamaged();
|
| + scheduler_->DisplayDamaged();
|
| *changed = true;
|
| }
|
| }
|
|
|