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

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: changed from raw SkPixelRef pointers to skia::RefPtr<SkPixelRef> 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698