| 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 allow_partial_texture_updates(false), | 54 allow_partial_texture_updates(false), |
| 55 using_offscreen_context3d(false), | 55 using_offscreen_context3d(false), |
| 56 max_texture_size(0), | 56 max_texture_size(0), |
| 57 avoid_pow2_textures(false), | 57 avoid_pow2_textures(false), |
| 58 using_map_image(false), | 58 using_map_image(false), |
| 59 using_shared_memory_resources(false) {} | 59 using_shared_memory_resources(false) {} |
| 60 | 60 |
| 61 RendererCapabilities::~RendererCapabilities() {} | 61 RendererCapabilities::~RendererCapabilities() {} |
| 62 | 62 |
| 63 UIResourceRequest::UIResourceRequest() | 63 UIResourceRequest::UIResourceRequest() |
| 64 : type(UIResourceInvalidRequest), id(0), bitmap(NULL) {} | 64 : type(UIResourceInvalidRequest), id(0) {} |
| 65 | 65 |
| 66 UIResourceRequest::~UIResourceRequest() {} | 66 UIResourceRequest::~UIResourceRequest() {} |
| 67 | 67 |
| 68 bool LayerTreeHost::AnyLayerTreeHostInstanceExists() { | 68 bool LayerTreeHost::AnyLayerTreeHostInstanceExists() { |
| 69 return s_num_layer_tree_instances > 0; | 69 return s_num_layer_tree_instances > 0; |
| 70 } | 70 } |
| 71 | 71 |
| 72 scoped_ptr<LayerTreeHost> LayerTreeHost::Create( | 72 scoped_ptr<LayerTreeHost> LayerTreeHost::Create( |
| 73 LayerTreeHostClient* client, | 73 LayerTreeHostClient* client, |
| 74 const LayerTreeSettings& settings, | 74 const LayerTreeSettings& settings, |
| (...skipping 1041 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1116 ++iter) { | 1116 ++iter) { |
| 1117 (*iter).second->Animate(monotonic_time); | 1117 (*iter).second->Animate(monotonic_time); |
| 1118 bool start_ready_animations = true; | 1118 bool start_ready_animations = true; |
| 1119 (*iter).second->UpdateState(start_ready_animations, NULL); | 1119 (*iter).second->UpdateState(start_ready_animations, NULL); |
| 1120 } | 1120 } |
| 1121 } | 1121 } |
| 1122 | 1122 |
| 1123 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { | 1123 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { |
| 1124 DCHECK(client); | 1124 DCHECK(client); |
| 1125 | 1125 |
| 1126 UIResourceRequest request; | 1126 UIResourceId next_id = next_ui_resource_id_++; |
| 1127 bool resource_lost = false; | |
| 1128 request.type = UIResourceRequest::UIResourceCreate; | |
| 1129 request.id = next_ui_resource_id_++; | |
| 1130 | 1127 |
| 1131 DCHECK(ui_resource_client_map_.find(request.id) == | 1128 DCHECK(ui_resource_client_map_.find(next_id) == |
| 1132 ui_resource_client_map_.end()); | 1129 ui_resource_client_map_.end()); |
| 1133 | 1130 |
| 1134 request.bitmap = client->GetBitmap(request.id, resource_lost); | 1131 bool resource_lost = false; |
| 1132 UIResourceRequest request; |
| 1133 request.type = UIResourceRequest::UIResourceCreate; |
| 1134 request.id = next_id; |
| 1135 request.bitmap = client->GetBitmap(next_id, resource_lost); |
| 1135 ui_resource_request_queue_.push_back(request); | 1136 ui_resource_request_queue_.push_back(request); |
| 1136 ui_resource_client_map_[request.id] = client; | 1137 |
| 1138 UIResourceClientData data; |
| 1139 data.client = client; |
| 1140 data.size = request.bitmap.GetSize(); |
| 1141 |
| 1142 ui_resource_client_map_[request.id] = data; |
| 1137 return request.id; | 1143 return request.id; |
| 1138 } | 1144 } |
| 1139 | 1145 |
| 1140 // Deletes a UI resource. May safely be called more than once. | 1146 // Deletes a UI resource. May safely be called more than once. |
| 1141 void LayerTreeHost::DeleteUIResource(UIResourceId uid) { | 1147 void LayerTreeHost::DeleteUIResource(UIResourceId uid) { |
| 1142 UIResourceClientMap::iterator iter = ui_resource_client_map_.find(uid); | 1148 UIResourceClientMap::iterator it = ui_resource_client_map_.find(uid); |
| 1143 if (iter == ui_resource_client_map_.end()) | 1149 if (it == ui_resource_client_map_.end()) |
| 1144 return; | 1150 return; |
| 1145 | 1151 |
| 1146 UIResourceRequest request; | 1152 UIResourceRequest request; |
| 1147 request.type = UIResourceRequest::UIResourceDelete; | 1153 request.type = UIResourceRequest::UIResourceDelete; |
| 1148 request.id = uid; | 1154 request.id = uid; |
| 1149 ui_resource_request_queue_.push_back(request); | 1155 ui_resource_request_queue_.push_back(request); |
| 1150 ui_resource_client_map_.erase(uid); | 1156 ui_resource_client_map_.erase(it); |
| 1157 } |
| 1158 |
| 1159 // Returns the size of a resource given its id. |
| 1160 gfx::Size LayerTreeHost::GetUIResourceSize(UIResourceId uid) const { |
| 1161 UIResourceClientMap::const_iterator it = ui_resource_client_map_.find(uid); |
| 1162 if (it == ui_resource_client_map_.end()) |
| 1163 return gfx::Size(); |
| 1164 |
| 1165 const UIResourceClientData& data = it->second; |
| 1166 return data.size; |
| 1151 } | 1167 } |
| 1152 | 1168 |
| 1153 void LayerTreeHost::UIResourceLost(UIResourceId uid) { | 1169 void LayerTreeHost::UIResourceLost(UIResourceId uid) { |
| 1154 UIResourceClientMap::iterator iter = ui_resource_client_map_.find(uid); | 1170 UIResourceClientMap::iterator it = ui_resource_client_map_.find(uid); |
| 1155 if (iter == ui_resource_client_map_.end()) | 1171 if (it == ui_resource_client_map_.end()) |
| 1156 return; | 1172 return; |
| 1157 | 1173 |
| 1174 UIResourceClientData data = it->second; |
| 1175 bool resource_lost = true; |
| 1158 UIResourceRequest request; | 1176 UIResourceRequest request; |
| 1159 bool resource_lost = true; | |
| 1160 request.type = UIResourceRequest::UIResourceCreate; | 1177 request.type = UIResourceRequest::UIResourceCreate; |
| 1161 request.id = uid; | 1178 request.id = uid; |
| 1162 request.bitmap = iter->second->GetBitmap(uid, resource_lost); | 1179 request.bitmap = data.client->GetBitmap(uid, resource_lost); |
| 1163 DCHECK(request.bitmap.get()); | 1180 |
| 1164 ui_resource_request_queue_.push_back(request); | 1181 ui_resource_request_queue_.push_back(request); |
| 1165 } | 1182 } |
| 1166 | 1183 |
| 1167 void LayerTreeHost::DidLoseUIResources() { | 1184 void LayerTreeHost::DidLoseUIResources() { |
| 1168 // When output surface is lost, we need to recreate the resource. | 1185 // When output surface is lost, we need to recreate the resource. |
| 1169 for (UIResourceClientMap::iterator iter = ui_resource_client_map_.begin(); | 1186 for (UIResourceClientMap::iterator it = ui_resource_client_map_.begin(); |
| 1170 iter != ui_resource_client_map_.end(); | 1187 it != ui_resource_client_map_.end(); |
| 1171 ++iter) { | 1188 ++it) { |
| 1172 UIResourceLost(iter->first); | 1189 UIResourceLost(it->first); |
| 1173 } | 1190 } |
| 1174 } | 1191 } |
| 1175 | 1192 |
| 1176 } // namespace cc | 1193 } // namespace cc |
| OLD | NEW |