Index: cc/surfaces/display.cc |
diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc |
index 7b87487b562da723fa883206a0fb28c93f1f6c8f..d520a66116a426100f9507c78474915a4f3b39f0 100644 |
--- a/cc/surfaces/display.cc |
+++ b/cc/surfaces/display.cc |
@@ -15,7 +15,6 @@ |
#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" |
@@ -34,7 +33,6 @@ |
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::ThreadTaskRunnerHandle::Get())), |
texture_mailbox_deleter_( |
@@ -53,23 +51,15 @@ |
} |
} |
-bool Display::Initialize(scoped_ptr<OutputSurface> output_surface, |
- DisplayScheduler* scheduler) { |
+bool Display::Initialize(scoped_ptr<OutputSurface> output_surface) { |
output_surface_ = output_surface.Pass(); |
- scheduler_ = scheduler; |
return output_surface_->BindToClient(this); |
} |
void Display::SetSurfaceId(SurfaceId id, float device_scale_factor) { |
- if (current_surface_id_ == id && device_scale_factor_ == device_scale_factor) |
- return; |
- |
current_surface_id_ = id; |
device_scale_factor_ = device_scale_factor; |
- |
- UpdateResourcesLockedByBrowser(); |
- if (scheduler_) |
- scheduler_->EntireDisplayDamaged(); |
+ client_->DisplayDamaged(); |
} |
void Display::Resize(const gfx::Size& size) { |
@@ -80,8 +70,7 @@ |
if (renderer_ && settings_.finish_rendering_on_resize) |
renderer_->Finish(); |
current_surface_size_ = size; |
- if (scheduler_) |
- scheduler_->EntireDisplayDamaged(); |
+ client_->DisplayDamaged(); |
} |
void Display::InitializeRenderer() { |
@@ -117,18 +106,9 @@ |
void Display::DidLoseOutputSurface() { |
client_->OutputSurfaceLost(); |
- if (scheduler_) |
- scheduler_->OutputSurfaceLost(); |
-} |
- |
-void Display::UpdateResourcesLockedByBrowser() { |
- Surface* surface = manager_->GetSurfaceForId(current_surface_id_); |
- bool resources_locked_by_browser = !surface || !surface->GetEligibleFrame(); |
- if (scheduler_) |
- scheduler_->SetResourcesLockedByBrowser(resources_locked_by_browser); |
-} |
- |
-bool Display::DrawAndSwap() { |
+} |
+ |
+bool Display::Draw() { |
if (current_surface_id_.is_null()) |
return false; |
@@ -143,7 +123,7 @@ |
if (!frame) |
return false; |
- TRACE_EVENT0("cc", "Display::DrawAndSwap"); |
+ TRACE_EVENT0("cc", "Display::Draw"); |
benchmark_instrumentation::IssueDisplayRenderingStatsEvent(); |
// Run callbacks early to allow pipelining. |
@@ -200,13 +180,11 @@ |
} |
void Display::DidSwapBuffers() { |
- if (scheduler_) |
- scheduler_->DidSwapBuffers(); |
+ client_->DidSwapBuffers(); |
} |
void Display::DidSwapBuffersComplete() { |
- if (scheduler_) |
- scheduler_->DidSwapBuffersComplete(); |
+ client_->DidSwapBuffersComplete(); |
} |
void Display::CommitVSyncParameters(base::TimeTicks timebase, |
@@ -255,25 +233,27 @@ |
if (surface) { |
const CompositorFrame* current_frame = surface->GetEligibleFrame(); |
if (!current_frame || !current_frame->delegated_frame_data || |
- !current_frame->delegated_frame_data->resource_list.size()) { |
+ !current_frame->delegated_frame_data->resource_list.size()) |
aggregator_->ReleaseResources(surface_id); |
- } |
} |
- if (scheduler_) |
- scheduler_->SurfaceDamaged(surface_id); |
+ client_->DisplayDamaged(); |
*changed = true; |
} else if (surface_id == current_surface_id_) { |
- if (scheduler_) |
- scheduler_->SurfaceDamaged(surface_id); |
+ client_->DisplayDamaged(); |
*changed = true; |
} |
- |
- if (surface_id == current_surface_id_) |
- UpdateResourcesLockedByBrowser(); |
} |
SurfaceId Display::CurrentSurfaceId() { |
return current_surface_id_; |
} |
+int Display::GetMaxFramesPending() { |
+ int max_frames_pending = |
+ output_surface_ ? output_surface_->capabilities().max_frames_pending : 0; |
+ if (max_frames_pending <= 0) |
+ max_frames_pending = OutputSurface::DEFAULT_MAX_FRAMES_PENDING; |
+ return max_frames_pending; |
+} |
+ |
} // namespace cc |