Chromium Code Reviews| Index: cc/trees/layer_tree_host_impl.cc |
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
| index 9063caf66d67f57c2dad462ec1ec9320663c8369..ae685943b8c0227148af9d4383783fe24c346d73 100644 |
| --- a/cc/trees/layer_tree_host_impl.cc |
| +++ b/cc/trees/layer_tree_host_impl.cc |
| @@ -697,11 +697,11 @@ static void AppendQuadsToFillScreen( |
| } |
| } |
| -bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| +DrawSwapReadbackResult::DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
| + FrameData* frame) { |
| DCHECK(frame->render_passes.empty()); |
| - |
| - if (!CanDraw() || !active_tree_->root_layer()) |
| - return false; |
| + DCHECK(CanDraw()); |
|
danakj
2014/01/29 21:56:29
yay
|
| + DCHECK(active_tree_->root_layer()); |
| TrackDamageForAllSurfaces(active_tree_->root_layer(), |
| *frame->render_surface_layer_list); |
| @@ -725,7 +725,7 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| DCHECK_EQ(0u, active_tree_->LayersWithCopyOutputRequest().size()); |
| DCHECK(!output_surface_->capabilities() |
| .draw_and_swap_full_viewport_every_frame); |
| - return true; |
| + return DrawSwapReadbackResult::DRAW_SUCCESS; |
| } |
| TRACE_EVENT1("cc", |
| @@ -779,7 +779,8 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| // still draw the frame. However when the layer being checkerboarded is moving |
| // due to an impl-animation, we drop the frame to avoid flashing due to the |
| // texture suddenly appearing in the future. |
| - bool draw_frame = true; |
| + DrawSwapReadbackResult::DrawResult draw_result = |
| + DrawSwapReadbackResult::DRAW_SUCCESS; |
| // When we have a copy request for a layer, we need to draw no matter |
| // what, as the layer may disappear after this frame. |
| bool have_copy_request = false; |
| @@ -865,8 +866,10 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| bool layer_has_animating_transform = |
| it->screen_space_transform_is_animating() || |
| it->draw_transform_is_animating(); |
| - if (layer_has_animating_transform) |
| - draw_frame = false; |
| + if (layer_has_animating_transform) { |
| + draw_result = |
| + DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS; |
| + } |
| } |
| if (append_quads_data.had_incomplete_tile) |
| @@ -877,7 +880,7 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| if (have_copy_request || |
| output_surface_->capabilities().draw_and_swap_full_viewport_every_frame) |
| - draw_frame = true; |
| + draw_result = DrawSwapReadbackResult::DRAW_SUCCESS; |
| #ifndef NDEBUG |
| for (size_t i = 0; i < frame->render_passes.size(); ++i) { |
| @@ -901,7 +904,7 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| occlusion_tracker); |
| } |
| - if (draw_frame) |
| + if (draw_result == DrawSwapReadbackResult::DRAW_SUCCESS) |
| occlusion_tracker.overdraw_metrics()->RecordMetrics(this); |
| else |
| DCHECK(!have_copy_request); |
| @@ -926,7 +929,7 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| if (output_surface_->ForcedDrawToSoftwareDevice()) |
| DCHECK_EQ(1u, frame->render_passes.size()); |
| - return draw_frame; |
| + return draw_result; |
| } |
| void LayerTreeHostImpl::MainThreadHasStoppedFlinging() { |
| @@ -1078,8 +1081,9 @@ void LayerTreeHostImpl::RemoveRenderPasses(RenderPassCuller culler, |
| } |
| } |
| -bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame, |
| - const gfx::Rect& damage_rect) { |
| +DrawSwapReadbackResult::DrawResult LayerTreeHostImpl::PrepareToDraw( |
| + FrameData* frame, |
| + const gfx::Rect& damage_rect) { |
| TRACE_EVENT1("cc", |
| "LayerTreeHostImpl::PrepareToDraw", |
| "SourceFrameNumber", |
| @@ -1109,15 +1113,17 @@ bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame, |
| AddDamageNextUpdate(device_viewport_damage_rect); |
| } |
| - if (!CalculateRenderPasses(frame)) { |
| + DrawSwapReadbackResult::DrawResult draw_result = CalculateRenderPasses(frame); |
| + if (draw_result != DrawSwapReadbackResult::DRAW_SUCCESS) { |
| DCHECK(!output_surface_->capabilities() |
| .draw_and_swap_full_viewport_every_frame); |
| - return false; |
| + return draw_result; |
| } |
| - // If we return true, then we expect DrawLayers() to be called before this |
| + // If we return DRAW_SUCCESS, then we expect DrawLayers() to be called before |
| + // this |
|
danakj
2014/01/29 21:56:29
wrapping
enne (OOO)
2014/01/29 23:09:23
80col
danakj
2014/01/29 23:10:48
i meant the next line could join this one tho? "th
enne (OOO)
2014/01/29 23:11:28
<_<
|
| // function is called again. |
| - return true; |
| + return draw_result; |
| } |
| void LayerTreeHostImpl::EvictTexturesForTesting() { |