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