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()); |
} |
- 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()); |