Index: cc/output/direct_renderer.cc |
diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc |
index b97dec844b74a91eda2f5a96c5dce6fe0e246cb0..e7b79d9f93a6350d2e3472b0478bef248659be26 100644 |
--- a/cc/output/direct_renderer.cc |
+++ b/cc/output/direct_renderer.cc |
@@ -192,28 +192,28 @@ void DirectRenderer::DecideRenderPassAllocationsForFrame( |
render_passes_in_frame[pass->id] = RenderPassTextureSize(pass.get()); |
} |
- std::vector<int> passes_to_delete; |
- for (const auto& pair : render_pass_textures_) { |
- auto it = render_passes_in_frame.find(pair.first); |
- if (it == render_passes_in_frame.end()) { |
- passes_to_delete.push_back(pair.first); |
- continue; |
- } |
+ base::EraseIf(render_pass_textures_, |
+ [&](const std::pair<RenderPassId, |
danakj
2017/07/20 16:12:20
can you put the lambda in an auto var first, rathe
dyaroshev
2017/07/20 16:33:02
Just reverted and fixed compilation.
|
+ std::unique_ptr<ScopedResource>>& pair) { |
+ auto it = render_passes_in_frame.find(pair.first); |
- gfx::Size required_size = it->second; |
- ScopedResource* texture = pair.second.get(); |
- DCHECK(texture); |
+ // Delete RenderPass textures from the previous frame that |
+ // will not be used again. |
+ if (it == render_passes_in_frame.end()) |
+ return true; |
- bool size_appropriate = texture->size().width() >= required_size.width() && |
- texture->size().height() >= required_size.height(); |
- if (texture->id() && !size_appropriate) |
- texture->Free(); |
- } |
+ gfx::Size required_size = it->second; |
+ ScopedResource* texture = pair.second.get(); |
+ DCHECK(texture); |
- // Delete RenderPass textures from the previous frame that will not be used |
- // again. |
- for (size_t i = 0; i < passes_to_delete.size(); ++i) |
- render_pass_textures_.erase(passes_to_delete[i]); |
+ bool size_appropriate = |
+ texture->size().width() >= required_size.width() && |
+ texture->size().height() >= required_size.height(); |
+ if (texture->id() && !size_appropriate) |
+ texture->Free(); |
+ |
+ return false; |
+ }); |
for (auto& pass : render_passes_in_draw_order) { |
auto& resource = render_pass_textures_[pass->id]; |
@@ -637,7 +637,8 @@ bool DirectRenderer::UseRenderPass(const RenderPass* render_pass) { |
return false; |
} |
-bool DirectRenderer::HasAllocatedResourcesForTesting(int render_pass_id) const { |
+bool DirectRenderer::HasAllocatedResourcesForTesting( |
+ RenderPassId render_pass_id) const { |
auto iter = render_pass_textures_.find(render_pass_id); |
return iter != render_pass_textures_.end() && iter->second->id(); |
} |