| Index: cc/surfaces/display.cc
|
| diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
|
| index cc904a0742050926fbf8341dfe566979ff03352d..a0ffb2ce35fce3f46f4c5674d1de15016926f006 100644
|
| --- a/cc/surfaces/display.cc
|
| +++ b/cc/surfaces/display.cc
|
| @@ -217,8 +217,7 @@ void Display::InitializeRenderer() {
|
|
|
| void Display::UpdateRootSurfaceResourcesLocked() {
|
| Surface* surface = surface_manager_->GetSurfaceForId(current_surface_id_);
|
| - bool root_surface_resources_locked =
|
| - !surface || !surface->GetEligibleFrame().delegated_frame_data;
|
| + bool root_surface_resources_locked = !surface || !surface->HasFrame();
|
| if (scheduler_)
|
| scheduler_->SetRootSurfaceResourcesLocked(root_surface_resources_locked);
|
| }
|
| @@ -245,7 +244,8 @@ bool Display::DrawAndSwap() {
|
| }
|
|
|
| CompositorFrame frame = aggregator_->Aggregate(current_surface_id_);
|
| - if (!frame.delegated_frame_data) {
|
| +
|
| + if (frame.render_pass_list.empty()) {
|
| TRACE_EVENT_INSTANT0("cc", "Empty aggregated frame.",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| return false;
|
| @@ -258,21 +258,19 @@ bool Display::DrawAndSwap() {
|
| surface->RunDrawCallbacks();
|
| }
|
|
|
| - DelegatedFrameData* frame_data = frame.delegated_frame_data.get();
|
| -
|
| frame.metadata.latency_info.insert(frame.metadata.latency_info.end(),
|
| stored_latency_info_.begin(),
|
| stored_latency_info_.end());
|
| stored_latency_info_.clear();
|
| bool have_copy_requests = false;
|
| - for (const auto& pass : frame_data->render_pass_list) {
|
| + for (const auto& pass : frame.render_pass_list) {
|
| have_copy_requests |= !pass->copy_requests.empty();
|
| }
|
|
|
| gfx::Size surface_size;
|
| bool have_damage = false;
|
| - if (!frame_data->render_pass_list.empty()) {
|
| - RenderPass& last_render_pass = *frame_data->render_pass_list.back();
|
| + if (!frame.render_pass_list.empty()) {
|
| + RenderPass& last_render_pass = *frame.render_pass_list.back();
|
| if (last_render_pass.output_rect.size() != current_surface_size_ &&
|
| last_render_pass.damage_rect == last_render_pass.output_rect &&
|
| !current_surface_size_.IsEmpty()) {
|
| @@ -299,7 +297,7 @@ bool Display::DrawAndSwap() {
|
| should_draw = false;
|
| }
|
|
|
| - client_->DisplayWillDrawAndSwap(should_draw, frame_data->render_pass_list);
|
| + client_->DisplayWillDrawAndSwap(should_draw, frame.render_pass_list);
|
|
|
| if (should_draw) {
|
| bool disable_image_filtering =
|
| @@ -312,9 +310,8 @@ bool Display::DrawAndSwap() {
|
| DCHECK(!disable_image_filtering);
|
| }
|
|
|
| - renderer_->DecideRenderPassAllocationsForFrame(
|
| - frame_data->render_pass_list);
|
| - renderer_->DrawFrame(&frame_data->render_pass_list, device_scale_factor_,
|
| + renderer_->DecideRenderPassAllocationsForFrame(frame.render_pass_list);
|
| + renderer_->DrawFrame(&frame.render_pass_list, device_scale_factor_,
|
| device_color_space_, current_surface_size_);
|
| } else {
|
| TRACE_EVENT_INSTANT0("cc", "Draw skipped.", TRACE_EVENT_SCOPE_THREAD);
|
| @@ -375,9 +372,8 @@ void Display::OnSurfaceDamaged(const SurfaceId& surface_id, bool* changed) {
|
| aggregator_->previous_contained_surfaces().count(surface_id)) {
|
| Surface* surface = surface_manager_->GetSurfaceForId(surface_id);
|
| if (surface) {
|
| - const CompositorFrame& current_frame = surface->GetEligibleFrame();
|
| - if (!current_frame.delegated_frame_data ||
|
| - current_frame.delegated_frame_data->resource_list.empty()) {
|
| + if (!surface->HasFrame() ||
|
| + surface->GetEligibleFrame().resource_list.empty()) {
|
| aggregator_->ReleaseResources(surface_id);
|
| }
|
| }
|
|
|