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