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 |