Chromium Code Reviews| Index: cc/surfaces/surface_aggregator.cc |
| diff --git a/cc/surfaces/surface_aggregator.cc b/cc/surfaces/surface_aggregator.cc |
| index 35107e8363adf32ffef983cc32801b5e4d481163..ea547a0ad0ba3da423a3a3b71f013827941f40ab 100644 |
| --- a/cc/surfaces/surface_aggregator.cc |
| +++ b/cc/surfaces/surface_aggregator.cc |
| @@ -188,7 +188,9 @@ void SurfaceAggregator::HandleSurfaceQuad(const SurfaceDrawQuad* surface_quad, |
| for (size_t j = 0; j < passes_to_copy; ++j) { |
| const RenderPass& source = *referenced_passes[j]; |
| - scoped_ptr<RenderPass> copy_pass(RenderPass::Create()); |
| + size_t sqs_size = source.shared_quad_state_list.size(); |
| + size_t dq_size = source.quad_list.size(); |
| + scoped_ptr<RenderPass> copy_pass(RenderPass::Create(sqs_size, dq_size)); |
| RenderPassId remapped_pass_id = RemapPassId(source.id, surface_id); |
| @@ -284,29 +286,28 @@ void SurfaceAggregator::CopyQuadsToPass( |
| SurfaceId surface_id) { |
| const SharedQuadState* last_copied_source_shared_quad_state = NULL; |
| - size_t sqs_i = 0; |
| - for (QuadList::ConstIterator iter = source_quad_list.begin(); |
| - iter != source_quad_list.end(); |
| - ++iter) { |
| - const DrawQuad* quad = &*iter; |
| - while (quad->shared_quad_state != source_shared_quad_state_list[sqs_i]) { |
| - ++sqs_i; |
| - DCHECK_LT(sqs_i, source_shared_quad_state_list.size()); |
| + SharedQuadStateList::ConstIterator sqs_iter = |
| + source_shared_quad_state_list.begin(); |
| + for (const auto& quad : source_quad_list) { |
| + while (quad.shared_quad_state != &*sqs_iter) { |
| + ++sqs_iter; |
| + DCHECK(sqs_iter != source_shared_quad_state_list.end()); |
|
danakj
2014/10/02 15:32:48
sqs_iter is only used for dchecks, can you use Ele
weiliangc
2014/10/02 22:01:40
It is used in the while loop check at line 292.
|
| } |
| - DCHECK_EQ(quad->shared_quad_state, source_shared_quad_state_list[sqs_i]); |
| + DCHECK_EQ(quad.shared_quad_state, &*sqs_iter); |
| - if (quad->material == DrawQuad::SURFACE_CONTENT) { |
| - const SurfaceDrawQuad* surface_quad = SurfaceDrawQuad::MaterialCast(quad); |
| + if (quad.material == DrawQuad::SURFACE_CONTENT) { |
| + const SurfaceDrawQuad* surface_quad = |
| + SurfaceDrawQuad::MaterialCast(&quad); |
| HandleSurfaceQuad(surface_quad, dest_pass); |
| } else { |
| - if (quad->shared_quad_state != last_copied_source_shared_quad_state) { |
| + if (quad.shared_quad_state != last_copied_source_shared_quad_state) { |
| CopySharedQuadState( |
| - quad->shared_quad_state, content_to_target_transform, dest_pass); |
| - last_copied_source_shared_quad_state = quad->shared_quad_state; |
| + quad.shared_quad_state, content_to_target_transform, dest_pass); |
| + last_copied_source_shared_quad_state = quad.shared_quad_state; |
| } |
| - if (quad->material == DrawQuad::RENDER_PASS) { |
| + if (quad.material == DrawQuad::RENDER_PASS) { |
| const RenderPassDrawQuad* pass_quad = |
| - RenderPassDrawQuad::MaterialCast(quad); |
| + RenderPassDrawQuad::MaterialCast(&quad); |
| RenderPassId original_pass_id = pass_quad->render_pass_id; |
| RenderPassId remapped_pass_id = |
| RemapPassId(original_pass_id, surface_id); |
| @@ -317,7 +318,7 @@ void SurfaceAggregator::CopyQuadsToPass( |
| remapped_pass_id); |
| } else { |
| dest_pass->CopyFromAndAppendDrawQuad( |
| - quad, dest_pass->shared_quad_state_list.back()); |
| + &quad, dest_pass->shared_quad_state_list.back()); |
| } |
| } |
| } |
| @@ -328,7 +329,9 @@ void SurfaceAggregator::CopyPasses(const RenderPassList& source_pass_list, |
| for (size_t i = 0; i < source_pass_list.size(); ++i) { |
| const RenderPass& source = *source_pass_list[i]; |
| - scoped_ptr<RenderPass> copy_pass(RenderPass::Create()); |
| + size_t sqs_size = source.shared_quad_state_list.size(); |
| + size_t dq_size = source.quad_list.size(); |
| + scoped_ptr<RenderPass> copy_pass(RenderPass::Create(sqs_size, dq_size)); |
| RenderPassId remapped_pass_id = |
| RemapPassId(source.id, surface->surface_id()); |