Chromium Code Reviews| Index: cc/output/overlay_strategy_single_on_top.cc |
| diff --git a/cc/output/overlay_strategy_single_on_top.cc b/cc/output/overlay_strategy_single_on_top.cc |
| index 5670a37f93de2dd06b023a377608406f11b05875..46be652b83501fe079a230c7bac5ea225f6f0e24 100644 |
| --- a/cc/output/overlay_strategy_single_on_top.cc |
| +++ b/cc/output/overlay_strategy_single_on_top.cc |
| @@ -13,37 +13,29 @@ namespace cc { |
| OverlayStrategySingleOnTop::~OverlayStrategySingleOnTop() {} |
| -bool OverlayStrategySingleOnTop::TryOverlay( |
| +OverlayResult OverlayStrategySingleOnTop::TryOverlay( |
| OverlayCandidateValidator* capability_checker, |
| RenderPassList* render_passes_in_draw_order, |
| OverlayCandidateList* candidate_list, |
| const OverlayCandidate& candidate, |
| - QuadList::Iterator candidate_iterator, |
| + QuadList::Iterator* candidate_iterator, |
| float device_scale_factor) { |
| RenderPass* root_render_pass = render_passes_in_draw_order->back(); |
| QuadList& quad_list = root_render_pass->quad_list; |
| - const DrawQuad* draw_quad = *candidate_iterator; |
| - gfx::RectF rect = draw_quad->rect; |
| - draw_quad->shared_quad_state->quad_to_target_transform.TransformRect(&rect); |
|
Andre
2015/09/03 22:52:19
This calculation should be the same as just using
alexst (slow to review)
2015/09/04 15:32:10
Yeah, looks like it is, good catch.
|
| // Check that no prior quads overlap it. |
| for (auto overlap_iter = quad_list.cbegin(); |
| - overlap_iter != candidate_iterator; ++overlap_iter) { |
| + overlap_iter != *candidate_iterator; ++overlap_iter) { |
| gfx::RectF overlap_rect = overlap_iter->rect; |
| overlap_iter->shared_quad_state->quad_to_target_transform.TransformRect( |
| &overlap_rect); |
| - if (rect.Intersects(overlap_rect) && |
| + if (candidate.display_rect.Intersects(overlap_rect) && |
| !OverlayStrategyCommon::IsInvisibleQuad(*overlap_iter)) |
| - return false; |
| + return DID_NOT_CREATE_OVERLAY; |
| } |
| - // Add our primary surface. |
| - OverlayCandidateList candidates; |
| - OverlayCandidate main_image; |
| - main_image.display_rect = root_render_pass->output_rect; |
| - candidates.push_back(main_image); |
| - |
| // Add the overlay. |
| + OverlayCandidateList candidates = *candidate_list; |
| candidates.push_back(candidate); |
| candidates.back().plane_z_order = 1; |
| @@ -51,12 +43,13 @@ bool OverlayStrategySingleOnTop::TryOverlay( |
| capability_checker->CheckOverlaySupport(&candidates); |
| // If the candidate can be handled by an overlay, create a pass for it. |
| - if (candidates[1].overlay_handled) { |
| - quad_list.EraseAndInvalidateAllPointers(candidate_iterator); |
| + if (candidates.back().overlay_handled) { |
| + quad_list.EraseAndInvalidateAllPointers(*candidate_iterator); |
| candidate_list->swap(candidates); |
| - return true; |
| + return CREATED_OVERLAY_STOP_LOOKING; |
| } |
| - return false; |
| + |
| + return DID_NOT_CREATE_OVERLAY; |
| } |
| } // namespace cc |