Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <stack> | 8 #include <stack> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 1123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1134 ui_resource_client_map_.end()); | 1134 ui_resource_client_map_.end()); |
| 1135 | 1135 |
| 1136 request.bitmap = client->GetBitmap(request.id, resource_lost); | 1136 request.bitmap = client->GetBitmap(request.id, resource_lost); |
| 1137 ui_resource_request_queue_.push_back(request); | 1137 ui_resource_request_queue_.push_back(request); |
| 1138 ui_resource_client_map_[request.id] = client; | 1138 ui_resource_client_map_[request.id] = client; |
| 1139 return request.id; | 1139 return request.id; |
| 1140 } | 1140 } |
| 1141 | 1141 |
| 1142 // Deletes a UI resource. May safely be called more than once. | 1142 // Deletes a UI resource. May safely be called more than once. |
| 1143 void LayerTreeHost::DeleteUIResource(UIResourceId uid) { | 1143 void LayerTreeHost::DeleteUIResource(UIResourceId uid) { |
| 1144 UIResourceClientMap::iterator iter = ui_resource_client_map_.find(uid); | 1144 UIResourceClientMap::iterator it = ui_resource_client_map_.find(uid); |
| 1145 if (iter == ui_resource_client_map_.end()) | 1145 if (it == ui_resource_client_map_.end()) |
| 1146 return; | 1146 return; |
| 1147 | 1147 |
| 1148 UIResourceRequest request; | 1148 UIResourceRequest request; |
| 1149 request.type = UIResourceRequest::UIResourceDelete; | 1149 request.type = UIResourceRequest::UIResourceDelete; |
| 1150 request.id = uid; | 1150 request.id = uid; |
| 1151 ui_resource_request_queue_.push_back(request); | 1151 ui_resource_request_queue_.push_back(request); |
| 1152 ui_resource_client_map_.erase(uid); | 1152 ui_resource_client_map_.erase(uid); |
| 1153 } | 1153 } |
| 1154 | 1154 |
| 1155 // Returns the size of a resource given its id. | |
| 1156 gfx::Size LayerTreeHost::GetUIResourceSize(UIResourceId uid) { | |
| 1157 UIResourceClientMap::iterator it = ui_resource_client_map_.find(uid); | |
| 1158 if (it == ui_resource_client_map_.end()) | |
| 1159 return gfx::Size(); | |
| 1160 | |
| 1161 DCHECK(it->second); | |
| 1162 | |
| 1163 bool resource_lost = false; | |
| 1164 UIResourceClient* client = it->second; | |
| 1165 scoped_refptr<UIResourceBitmap> bitmap = | |
| 1166 client->GetBitmap(uid, resource_lost); | |
|
aelias_OOO_until_Jul13
2013/08/30 06:20:41
This operation may be expensive, I don't think we
powei
2013/09/03 23:36:05
Done.
| |
| 1167 | |
| 1168 DCHECK(bitmap.get()); | |
| 1169 | |
| 1170 return bitmap->GetSize(); | |
| 1171 } | |
| 1172 | |
| 1155 void LayerTreeHost::UIResourceLost(UIResourceId uid) { | 1173 void LayerTreeHost::UIResourceLost(UIResourceId uid) { |
| 1156 UIResourceClientMap::iterator iter = ui_resource_client_map_.find(uid); | 1174 UIResourceClientMap::iterator it = ui_resource_client_map_.find(uid); |
| 1157 if (iter == ui_resource_client_map_.end()) | 1175 if (it == ui_resource_client_map_.end()) |
| 1158 return; | 1176 return; |
| 1159 | 1177 |
| 1160 UIResourceRequest request; | 1178 UIResourceRequest request; |
| 1161 bool resource_lost = true; | 1179 bool resource_lost = true; |
| 1162 request.type = UIResourceRequest::UIResourceCreate; | 1180 request.type = UIResourceRequest::UIResourceCreate; |
| 1163 request.id = uid; | 1181 request.id = uid; |
| 1164 request.bitmap = iter->second->GetBitmap(uid, resource_lost); | 1182 request.bitmap = it->second->GetBitmap(uid, resource_lost); |
| 1165 DCHECK(request.bitmap.get()); | 1183 DCHECK(request.bitmap.get()); |
| 1166 ui_resource_request_queue_.push_back(request); | 1184 ui_resource_request_queue_.push_back(request); |
| 1167 } | 1185 } |
| 1168 | 1186 |
| 1169 void LayerTreeHost::DidLoseUIResources() { | 1187 void LayerTreeHost::DidLoseUIResources() { |
| 1170 // When output surface is lost, we need to recreate the resource. | 1188 // When output surface is lost, we need to recreate the resource. |
| 1171 for (UIResourceClientMap::iterator iter = ui_resource_client_map_.begin(); | 1189 for (UIResourceClientMap::iterator it = ui_resource_client_map_.begin(); |
| 1172 iter != ui_resource_client_map_.end(); | 1190 it != ui_resource_client_map_.end(); |
| 1173 ++iter) { | 1191 ++it) { |
| 1174 UIResourceLost(iter->first); | 1192 UIResourceLost(it->first); |
| 1175 } | 1193 } |
| 1176 } | 1194 } |
| 1177 | 1195 |
| 1178 } // namespace cc | 1196 } // namespace cc |
| OLD | NEW |