| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index 1131050dc695a131dfee529af78852843b05ae7e..cc72e84bb27ec308b0c20c70da47b62ee285d90e 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -1536,11 +1536,15 @@ void LayerTreeHostImpl::SetVisible(bool visible) {
|
| DidVisibilityChange(this, visible_);
|
| EnforceManagedMemoryPolicy(ActualManagedMemoryPolicy());
|
|
|
| - // Evict tiles immediately if invisible since this tab may never get another
|
| - // draw or timer tick.
|
| - if (!visible_)
|
| + if (!visible_) {
|
| + // Evict tiles immediately if invisible since this tab may never get another
|
| + // draw or timer tick.
|
| ManageTiles();
|
|
|
| + // Evict UI resources
|
| + ReleaseUIResources();
|
| + }
|
| +
|
| if (!renderer_)
|
| return;
|
|
|
| @@ -1576,8 +1580,7 @@ void LayerTreeHostImpl::ReleaseTreeResources() {
|
| if (recycle_tree_ && recycle_tree_->root_layer())
|
| SendReleaseResourcesRecursive(recycle_tree_->root_layer());
|
|
|
| - // Remove all existing maps from UIResourceId to ResourceId.
|
| - ui_resource_map_.clear();
|
| + ReleaseUIResources();
|
| }
|
|
|
| void LayerTreeHostImpl::CreateAndSetRenderer(
|
| @@ -2548,4 +2551,13 @@ ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource(
|
| return 0;
|
| }
|
|
|
| +void LayerTreeHostImpl::ReleaseUIResources() {
|
| + for (UIResourceMap::const_iterator iter = ui_resource_map_.begin();
|
| + iter != ui_resource_map_.end();
|
| + ++iter) {
|
| + resource_provider_->DeleteResource(iter->second);
|
| + }
|
| + ui_resource_map_.clear();
|
| +}
|
| +
|
| } // namespace cc
|
|
|