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 9f1efdcdadbd9853f533b60d065aee811459e38f..dc335afc45503d7ae2d4c75c52be30c8ac7deb33 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -638,7 +638,6 @@ void LayerTreeHostImpl::FrameData::AsValueInto( |
void LayerTreeHostImpl::FrameData::AppendRenderPass( |
scoped_ptr<RenderPass> render_pass) { |
- render_passes_by_id[render_pass->id] = render_pass.get(); |
render_passes.push_back(render_pass.Pass()); |
} |
@@ -738,6 +737,13 @@ static void AppendQuadsToFillScreen(const gfx::Rect& root_scroll_layer_rect, |
} |
} |
+static RenderPass* FindRenderPassById(const RenderPassList& list, |
+ RenderPassId id) { |
+ auto it = std::find_if(list.begin(), list.end(), |
+ [id](const RenderPass* p) { return p->id == id; }); |
+ return it == list.end() ? nullptr : *it; |
+} |
+ |
DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
FrameData* frame) { |
DCHECK(frame->render_passes.empty()); |
@@ -847,7 +853,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
RenderPassId target_render_pass_id = |
it.target_render_surface_layer()->render_surface()->GetRenderPassId(); |
RenderPass* target_render_pass = |
- frame->render_passes_by_id[target_render_pass_id]; |
+ FindRenderPassById(frame->render_passes, target_render_pass_id); |
AppendQuadsData append_quads_data; |
@@ -862,7 +868,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
RenderPassId contributing_render_pass_id = |
it->render_surface()->GetRenderPassId(); |
RenderPass* contributing_render_pass = |
- frame->render_passes_by_id[contributing_render_pass_id]; |
+ FindRenderPassById(frame->render_passes, contributing_render_pass_id); |
AppendQuadsForRenderSurfaceLayer(target_render_pass, |
*it, |
contributing_render_pass, |
@@ -879,13 +885,10 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
if (it->HasContributingDelegatedRenderPasses()) { |
RenderPassId contributing_render_pass_id = |
it->FirstContributingRenderPassId(); |
- while (frame->render_passes_by_id.find(contributing_render_pass_id) != |
- frame->render_passes_by_id.end()) { |
- RenderPass* render_pass = |
- frame->render_passes_by_id[contributing_render_pass_id]; |
- |
- it->AppendQuads(render_pass, &append_quads_data); |
- |
+ RenderPass* pass; |
+ while ((pass = FindRenderPassById(frame->render_passes, |
danakj
2015/10/29 22:33:33
Windows doesn't like doing assignment inside a whi
vmpstr
2015/10/29 22:36:33
Or
for (auto* pass = FindRenderPassById(frame->r
|
+ contributing_render_pass_id))) { |
+ it->AppendQuads(pass, &append_quads_data); |
contributing_render_pass_id = |
it->NextContributingRenderPassId(contributing_render_pass_id); |
} |
@@ -956,11 +959,9 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
for (const auto& render_pass : frame->render_passes) { |
for (const auto& quad : render_pass->quad_list) |
DCHECK(quad->shared_quad_state); |
- DCHECK(frame->render_passes_by_id.find(render_pass->id) != |
- frame->render_passes_by_id.end()); |
} |
-#endif |
DCHECK(frame->render_passes.back()->output_rect.origin().IsOrigin()); |
+#endif |
if (!active_tree_->has_transparent_background()) { |
frame->render_passes.back()->has_transparent_background = false; |
@@ -1076,7 +1077,6 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) { |
frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); |
frame->render_passes.clear(); |
- frame->render_passes_by_id.clear(); |
frame->will_draw_layers.clear(); |
frame->has_no_damage = false; |
@@ -1140,7 +1140,6 @@ void LayerTreeHostImpl::RemoveRenderPasses(FrameData* frame) { |
if (pass->quad_list.empty() && pass->copy_requests.empty()) { |
// Remove the pass and decrement |i| to counter the for loop's increment, |
// so we don't skip the next pass in the loop. |
- frame->render_passes_by_id.erase(pass->id); |
frame->render_passes.erase(frame->render_passes.begin() + i); |
--i; |
continue; |
@@ -1169,7 +1168,6 @@ void LayerTreeHostImpl::RemoveRenderPasses(FrameData* frame) { |
pass_references[quad->render_pass_id]--; |
} |
- frame->render_passes_by_id.erase(pass->id); |
frame->render_passes.erase(frame->render_passes.end() - 2 - i); |
--i; |
} |
@@ -1630,7 +1628,6 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame) { |
} |
// The render passes should be consumed by the renderer. |
DCHECK(frame->render_passes.empty()); |
- frame->render_passes_by_id.clear(); |
// The next frame should start by assuming nothing has changed, and changes |
// are noted as they occur. |