Chromium Code Reviews| 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; |
|
ccameron
2013/08/26 23:54:32
I haven't seen this way for naming a parameter bef
danakj
2013/08/27 00:30:03
This is generally how we pass bool literals, ie we
|
| + 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); |
| } |
| } |