| Index: cc/trees/layer_tree_host.cc
|
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
|
| index cb76b46769dc7bb82f0c7cedf9e4fe06a326d402..5c3a0572c119786dbe5c2da0f2670556dfd4f5e5 100644
|
| --- a/cc/trees/layer_tree_host.cc
|
| +++ b/cc/trees/layer_tree_host.cc
|
| @@ -435,7 +435,8 @@ void LayerTreeHost::DidLoseOutputSurface() {
|
| if (output_surface_lost_)
|
| return;
|
|
|
| - DidLoseUIResources();
|
| + bool resource_lost = true;
|
| + RecreateUIResources(resource_lost);
|
|
|
| num_failed_recreate_attempts_ = 0;
|
| output_surface_lost_ = true;
|
| @@ -626,8 +627,13 @@ void LayerTreeHost::SetVisible(bool visible) {
|
| if (visible_ == visible)
|
| return;
|
| visible_ = visible;
|
| - if (!visible)
|
| + if (!visible) {
|
| ReduceMemoryUsage();
|
| + } else {
|
| + // Recreate the UI resources since they were evicted when SetVisible(false).
|
| + bool resource_lost = false;
|
| + RecreateUIResources(resource_lost);
|
| + }
|
| proxy_->SetVisible(visible);
|
| }
|
|
|
| @@ -1155,26 +1161,18 @@ void LayerTreeHost::DeleteUIResource(UIResourceId uid) {
|
| ui_resource_client_map_.erase(uid);
|
| }
|
|
|
| -void LayerTreeHost::UIResourceLost(UIResourceId uid) {
|
| - UIResourceClientMap::iterator iter = ui_resource_client_map_.find(uid);
|
| - if (iter == ui_resource_client_map_.end())
|
| - return;
|
| -
|
| - UIResourceRequest request;
|
| - bool resource_lost = true;
|
| - request.type = UIResourceRequest::UIResourceCreate;
|
| - request.id = uid;
|
| - request.bitmap = iter->second->GetBitmap(uid, resource_lost);
|
| - DCHECK(request.bitmap.get());
|
| - ui_resource_request_queue_.push_back(request);
|
| -}
|
| -
|
| -void LayerTreeHost::DidLoseUIResources() {
|
| +void LayerTreeHost::RecreateUIResources(bool resource_lost) {
|
| // When output surface is lost, we need to recreate the resource.
|
| for (UIResourceClientMap::iterator iter = ui_resource_client_map_.begin();
|
| iter != ui_resource_client_map_.end();
|
| ++iter) {
|
| - UIResourceLost(iter->first);
|
| + UIResourceId uid = iter->first;
|
| + UIResourceRequest request;
|
| + request.type = UIResourceRequest::UIResourceCreate;
|
| + request.id = uid;
|
| + request.bitmap = iter->second->GetBitmap(uid, resource_lost);
|
| + DCHECK(request.bitmap.get());
|
| + ui_resource_request_queue_.push_back(request);
|
| }
|
| }
|
|
|
|
|