Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: cc/trees/layer_tree_host.cc

Issue 22870016: Update the nine patch layer to use UI resources (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments by aelias. added invalidation of ui resources to android-side Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698