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

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

Issue 23740010: Revert 223162 "Update the nine patch layer to use UI resources" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: 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 | Annotate | Revision Log
« no previous file with comments | « trunk/src/cc/trees/layer_tree_host.h ('k') | trunk/src/cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 using_discard_framebuffer(false) {} 60 using_discard_framebuffer(false) {}
61 61
62 RendererCapabilities::~RendererCapabilities() {} 62 RendererCapabilities::~RendererCapabilities() {}
63 63
64 UIResourceRequest::UIResourceRequest(UIResourceRequestType type, 64 UIResourceRequest::UIResourceRequest()
65 UIResourceId id) 65 : type(UIResourceInvalidRequest), id(0), bitmap(NULL) {}
66 : type_(type), id_(id) {}
67
68 UIResourceRequest::UIResourceRequest(UIResourceRequestType type,
69 UIResourceId id,
70 const UIResourceBitmap& bitmap)
71 : type_(type), id_(id), bitmap_(new UIResourceBitmap(bitmap)) {}
72
73 UIResourceRequest::UIResourceRequest(const UIResourceRequest& request) {
74 (*this) = request;
75 }
76
77 UIResourceRequest& UIResourceRequest::operator=(
78 const UIResourceRequest& request) {
79 type_ = request.type_;
80 id_ = request.id_;
81 if (request.bitmap_) {
82 bitmap_ = make_scoped_ptr(new UIResourceBitmap(*request.bitmap_.get()));
83 } else {
84 bitmap_.reset();
85 }
86
87 return *this;
88 }
89 66
90 UIResourceRequest::~UIResourceRequest() {} 67 UIResourceRequest::~UIResourceRequest() {}
91 68
92 bool LayerTreeHost::AnyLayerTreeHostInstanceExists() { 69 bool LayerTreeHost::AnyLayerTreeHostInstanceExists() {
93 return s_num_layer_tree_instances > 0; 70 return s_num_layer_tree_instances > 0;
94 } 71 }
95 72
96 scoped_ptr<LayerTreeHost> LayerTreeHost::Create( 73 scoped_ptr<LayerTreeHost> LayerTreeHost::Create(
97 LayerTreeHostClient* client, 74 LayerTreeHostClient* client,
98 const LayerTreeSettings& settings, 75 const LayerTreeSettings& settings,
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 sync_tree->set_ui_resource_request_queue(ui_resource_request_queue_); 369 sync_tree->set_ui_resource_request_queue(ui_resource_request_queue_);
393 ui_resource_request_queue_.clear(); 370 ui_resource_request_queue_.clear();
394 // Process any ui resource requests in the queue. For impl-side-painting, 371 // Process any ui resource requests in the queue. For impl-side-painting,
395 // the queue is processed in LayerTreeHostImpl::ActivatePendingTree. 372 // the queue is processed in LayerTreeHostImpl::ActivatePendingTree.
396 if (!settings_.impl_side_painting) 373 if (!settings_.impl_side_painting)
397 sync_tree->ProcessUIResourceRequestQueue(); 374 sync_tree->ProcessUIResourceRequestQueue();
398 } 375 }
399 if (overhang_ui_resource_) { 376 if (overhang_ui_resource_) {
400 host_impl->SetOverhangUIResource( 377 host_impl->SetOverhangUIResource(
401 overhang_ui_resource_->id(), 378 overhang_ui_resource_->id(),
402 GetUIResourceSize(overhang_ui_resource_->id())); 379 overhang_ui_resource_->GetSize());
403 } 380 }
404 381
405 DCHECK(!sync_tree->ViewportSizeInvalid()); 382 DCHECK(!sync_tree->ViewportSizeInvalid());
406 383
407 if (new_impl_tree_has_no_evicted_resources) { 384 if (new_impl_tree_has_no_evicted_resources) {
408 if (sync_tree->ContentsTexturesPurged()) 385 if (sync_tree->ContentsTexturesPurged())
409 sync_tree->ResetContentsTexturesPurged(); 386 sync_tree->ResetContentsTexturesPurged();
410 } 387 }
411 388
412 if (!settings_.impl_side_painting) { 389 if (!settings_.impl_side_painting) {
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 page_scale_factor_ = page_scale_factor; 627 page_scale_factor_ = page_scale_factor;
651 min_page_scale_factor_ = min_page_scale_factor; 628 min_page_scale_factor_ = min_page_scale_factor;
652 max_page_scale_factor_ = max_page_scale_factor; 629 max_page_scale_factor_ = max_page_scale_factor;
653 SetNeedsCommit(); 630 SetNeedsCommit();
654 } 631 }
655 632
656 void LayerTreeHost::SetOverhangBitmap(const SkBitmap& bitmap) { 633 void LayerTreeHost::SetOverhangBitmap(const SkBitmap& bitmap) {
657 DCHECK(bitmap.width() && bitmap.height()); 634 DCHECK(bitmap.width() && bitmap.height());
658 DCHECK_EQ(bitmap.bytesPerPixel(), 4); 635 DCHECK_EQ(bitmap.bytesPerPixel(), 4);
659 636
660 SkBitmap bitmap_copy; 637 scoped_refptr<UIResourceBitmap> overhang_ui_bitmap(UIResourceBitmap::Create(
661 if (bitmap.isImmutable()) { 638 new uint8_t[bitmap.width() * bitmap.height() * bitmap.bytesPerPixel()],
662 bitmap_copy = bitmap; 639 UIResourceBitmap::RGBA8,
663 } else { 640 UIResourceBitmap::REPEAT,
664 bitmap.copyTo(&bitmap_copy, bitmap.config()); 641 gfx::Size(bitmap.width(), bitmap.height())));
665 bitmap_copy.setImmutable(); 642 bitmap.copyPixelsTo(
666 } 643 overhang_ui_bitmap->GetPixels(),
667 644 bitmap.width() * bitmap.height() * bitmap.bytesPerPixel(),
668 overhang_ui_resource_ = ScopedUIResource::Create( 645 bitmap.width() * bitmap.bytesPerPixel());
669 this, UIResourceBitmap(bitmap_copy, UIResourceBitmap::REPEAT)); 646 overhang_ui_resource_ = ScopedUIResource::Create(this, overhang_ui_bitmap);
670 } 647 }
671 648
672 void LayerTreeHost::SetVisible(bool visible) { 649 void LayerTreeHost::SetVisible(bool visible) {
673 if (visible_ == visible) 650 if (visible_ == visible)
674 return; 651 return;
675 visible_ = visible; 652 visible_ = visible;
676 if (!visible) 653 if (!visible)
677 ReduceMemoryUsage(); 654 ReduceMemoryUsage();
678 proxy_->SetVisible(visible); 655 proxy_->SetVisible(visible);
679 } 656 }
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
1162 ++iter) { 1139 ++iter) {
1163 (*iter).second->Animate(monotonic_time); 1140 (*iter).second->Animate(monotonic_time);
1164 bool start_ready_animations = true; 1141 bool start_ready_animations = true;
1165 (*iter).second->UpdateState(start_ready_animations, NULL); 1142 (*iter).second->UpdateState(start_ready_animations, NULL);
1166 } 1143 }
1167 } 1144 }
1168 1145
1169 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { 1146 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) {
1170 DCHECK(client); 1147 DCHECK(client);
1171 1148
1172 UIResourceId next_id = next_ui_resource_id_++; 1149 UIResourceRequest request;
1173 DCHECK(ui_resource_client_map_.find(next_id) == 1150 bool resource_lost = false;
1151 request.type = UIResourceRequest::UIResourceCreate;
1152 request.id = next_ui_resource_id_++;
1153
1154 DCHECK(ui_resource_client_map_.find(request.id) ==
1174 ui_resource_client_map_.end()); 1155 ui_resource_client_map_.end());
1175 1156
1176 bool resource_lost = false; 1157 request.bitmap = client->GetBitmap(request.id, resource_lost);
1177 UIResourceRequest request(UIResourceRequest::UIResourceCreate,
1178 next_id,
1179 client->GetBitmap(next_id, resource_lost));
1180 ui_resource_request_queue_.push_back(request); 1158 ui_resource_request_queue_.push_back(request);
1181 1159 ui_resource_client_map_[request.id] = client;
1182 UIResourceClientData data; 1160 return request.id;
1183 data.client = client;
1184 data.size = request.GetBitmap().GetSize();
1185
1186 ui_resource_client_map_[request.GetId()] = data;
1187 return request.GetId();
1188 } 1161 }
1189 1162
1190 // Deletes a UI resource. May safely be called more than once. 1163 // Deletes a UI resource. May safely be called more than once.
1191 void LayerTreeHost::DeleteUIResource(UIResourceId uid) { 1164 void LayerTreeHost::DeleteUIResource(UIResourceId uid) {
1192 UIResourceClientMap::iterator iter = ui_resource_client_map_.find(uid); 1165 UIResourceClientMap::iterator iter = ui_resource_client_map_.find(uid);
1193 if (iter == ui_resource_client_map_.end()) 1166 if (iter == ui_resource_client_map_.end())
1194 return; 1167 return;
1195 1168
1196 UIResourceRequest request(UIResourceRequest::UIResourceDelete, uid); 1169 UIResourceRequest request;
1170 request.type = UIResourceRequest::UIResourceDelete;
1171 request.id = uid;
1197 ui_resource_request_queue_.push_back(request); 1172 ui_resource_request_queue_.push_back(request);
1198 ui_resource_client_map_.erase(iter); 1173 ui_resource_client_map_.erase(uid);
1199 } 1174 }
1200 1175
1201 void LayerTreeHost::RecreateUIResources() { 1176 void LayerTreeHost::RecreateUIResources() {
1202 for (UIResourceClientMap::iterator iter = ui_resource_client_map_.begin(); 1177 for (UIResourceClientMap::iterator iter = ui_resource_client_map_.begin();
1203 iter != ui_resource_client_map_.end(); 1178 iter != ui_resource_client_map_.end();
1204 ++iter) { 1179 ++iter) {
1205 UIResourceId uid = iter->first; 1180 UIResourceId uid = iter->first;
1206 const UIResourceClientData& data = iter->second; 1181 UIResourceRequest request;
1182 request.type = UIResourceRequest::UIResourceCreate;
1183 request.id = uid;
1207 bool resource_lost = true; 1184 bool resource_lost = true;
1208 UIResourceRequest request(UIResourceRequest::UIResourceCreate, 1185 request.bitmap = iter->second->GetBitmap(uid, resource_lost);
1209 uid, 1186 DCHECK(request.bitmap.get());
1210 data.client->GetBitmap(uid, resource_lost));
1211 ui_resource_request_queue_.push_back(request); 1187 ui_resource_request_queue_.push_back(request);
1212 } 1188 }
1213 } 1189 }
1214 1190
1215 // Returns the size of a resource given its id.
1216 gfx::Size LayerTreeHost::GetUIResourceSize(UIResourceId uid) const {
1217 UIResourceClientMap::const_iterator iter = ui_resource_client_map_.find(uid);
1218 if (iter == ui_resource_client_map_.end())
1219 return gfx::Size();
1220
1221 const UIResourceClientData& data = iter->second;
1222 return data.size;
1223 }
1224
1225 } // namespace cc 1191 } // namespace cc
OLDNEW
« no previous file with comments | « trunk/src/cc/trees/layer_tree_host.h ('k') | trunk/src/cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698