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

Side by Side Diff: cc/tile_manager.cc

Issue 12207146: changing std::vector to std::set for all_tiles_ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: making iterator const Created 7 years, 10 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 | « cc/tile_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/tile_manager.h" 5 #include "cc/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 } 202 }
203 203
204 void TileManager::SetGlobalState( 204 void TileManager::SetGlobalState(
205 const GlobalStateThatImpactsTilePriority& global_state) { 205 const GlobalStateThatImpactsTilePriority& global_state) {
206 global_state_ = global_state; 206 global_state_ = global_state;
207 resource_pool_->SetMaxMemoryUsageBytes(global_state_.memory_limit_in_bytes); 207 resource_pool_->SetMaxMemoryUsageBytes(global_state_.memory_limit_in_bytes);
208 ScheduleManageTiles(); 208 ScheduleManageTiles();
209 } 209 }
210 210
211 void TileManager::RegisterTile(Tile* tile) { 211 void TileManager::RegisterTile(Tile* tile) {
212 all_tiles_.push_back(tile); 212 all_tiles_.insert(tile);
213 213
214 const ManagedTileState& mts = tile->managed_state(); 214 const ManagedTileState& mts = tile->managed_state();
215 for (int i = 0; i < NUM_TREES; ++i) 215 for (int i = 0; i < NUM_TREES; ++i)
216 ++raster_state_count_[mts.raster_state][i][mts.tree_bin[i]]; 216 ++raster_state_count_[mts.raster_state][i][mts.tree_bin[i]];
217 217
218 ScheduleManageTiles(); 218 ScheduleManageTiles();
219 } 219 }
220 220
221 void TileManager::UnregisterTile(Tile* tile) { 221 void TileManager::UnregisterTile(Tile* tile) {
222 for (TileList::iterator it = tiles_with_image_decoding_tasks_.begin(); 222 for (TileList::iterator it = tiles_with_image_decoding_tasks_.begin();
(...skipping 10 matching lines...) Expand all
233 break; 233 break;
234 } 234 }
235 } 235 }
236 for (TileVector::iterator it = live_or_allocated_tiles_.begin(); 236 for (TileVector::iterator it = live_or_allocated_tiles_.begin();
237 it != live_or_allocated_tiles_.end(); it++) { 237 it != live_or_allocated_tiles_.end(); it++) {
238 if (*it == tile) { 238 if (*it == tile) {
239 live_or_allocated_tiles_.erase(it); 239 live_or_allocated_tiles_.erase(it);
240 break; 240 break;
241 } 241 }
242 } 242 }
243 for (TileVector::iterator it = all_tiles_.begin(); 243 TileSet::iterator it = all_tiles_.find(tile);
244 it != all_tiles_.end(); it++) { 244 DCHECK(it != all_tiles_.end());
245 if (*it == tile) { 245 const ManagedTileState& mts = tile->managed_state();
246 const ManagedTileState& mts = tile->managed_state(); 246 for (int i = 0; i < NUM_TREES; ++i)
247 for (int i = 0; i < NUM_TREES; ++i) 247 --raster_state_count_[mts.raster_state][i][mts.tree_bin[i]];
248 --raster_state_count_[mts.raster_state][i][mts.tree_bin[i]]; 248 FreeResourcesForTile(tile);
249 FreeResourcesForTile(tile); 249 all_tiles_.erase(it);
250 all_tiles_.erase(it);
251 return;
252 }
253 }
254 DCHECK(false) << "Could not find tile version.";
255 } 250 }
256 251
257 class BinComparator { 252 class BinComparator {
258 public: 253 public:
259 bool operator() (const Tile* a, const Tile* b) const { 254 bool operator() (const Tile* a, const Tile* b) const {
260 const ManagedTileState& ams = a->managed_state(); 255 const ManagedTileState& ams = a->managed_state();
261 const ManagedTileState& bms = b->managed_state(); 256 const ManagedTileState& bms = b->managed_state();
262 if (ams.bin[HIGH_PRIORITY_BIN] != bms.bin[HIGH_PRIORITY_BIN]) 257 if (ams.bin[HIGH_PRIORITY_BIN] != bms.bin[HIGH_PRIORITY_BIN])
263 return ams.bin[HIGH_PRIORITY_BIN] < bms.bin[HIGH_PRIORITY_BIN]; 258 return ams.bin[HIGH_PRIORITY_BIN] < bms.bin[HIGH_PRIORITY_BIN];
264 259
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 bin_map[NEVER_BIN] = NEVER_BIN; 310 bin_map[NEVER_BIN] = NEVER_BIN;
316 } else { 311 } else {
317 bin_map[NOW_BIN] = NOW_BIN; 312 bin_map[NOW_BIN] = NOW_BIN;
318 bin_map[SOON_BIN] = SOON_BIN; 313 bin_map[SOON_BIN] = SOON_BIN;
319 bin_map[EVENTUALLY_BIN] = EVENTUALLY_BIN; 314 bin_map[EVENTUALLY_BIN] = EVENTUALLY_BIN;
320 bin_map[NEVER_BIN] = NEVER_BIN; 315 bin_map[NEVER_BIN] = NEVER_BIN;
321 } 316 }
322 317
323 live_or_allocated_tiles_.clear(); 318 live_or_allocated_tiles_.clear();
324 // For each tree, bin into different categories of tiles. 319 // For each tree, bin into different categories of tiles.
325 for (TileVector::iterator it = all_tiles_.begin(); 320 for (TileSet::iterator it = all_tiles_.begin();
326 it != all_tiles_.end(); ++it) { 321 it != all_tiles_.end(); ++it) {
327 Tile* tile = *it; 322 Tile* tile = *it;
328 ManagedTileState& mts = tile->managed_state(); 323 ManagedTileState& mts = tile->managed_state();
329 324
330 TilePriority prio[NUM_BIN_PRIORITIES]; 325 TilePriority prio[NUM_BIN_PRIORITIES];
331 switch (tree_priority) { 326 switch (tree_priority) {
332 case SAME_PRIORITY_FOR_BOTH_TREES: 327 case SAME_PRIORITY_FOR_BOTH_TREES:
333 prio[HIGH_PRIORITY_BIN] = prio[LOW_PRIORITY_BIN] = 328 prio[HIGH_PRIORITY_BIN] = prio[LOW_PRIORITY_BIN] =
334 tile->combined_priority(); 329 tile->combined_priority();
335 break; 330 break;
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); 457 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
463 state->SetInteger("tile_count", all_tiles_.size()); 458 state->SetInteger("tile_count", all_tiles_.size());
464 459
465 state->Set("global_state", global_state_.AsValue().release()); 460 state->Set("global_state", global_state_.AsValue().release());
466 461
467 state->Set("memory_requirements", GetMemoryRequirementsAsValue().release()); 462 state->Set("memory_requirements", GetMemoryRequirementsAsValue().release());
468 return state.PassAs<base::Value>(); 463 return state.PassAs<base::Value>();
469 } 464 }
470 scoped_ptr<base::Value> TileManager::AllTilesAsValue() const { 465 scoped_ptr<base::Value> TileManager::AllTilesAsValue() const {
471 scoped_ptr<base::ListValue> state(new base::ListValue()); 466 scoped_ptr<base::ListValue> state(new base::ListValue());
472 for (size_t i = 0; i < all_tiles_.size(); i++) 467 for (TileSet::const_iterator it = all_tiles_.begin();
473 state->Append(all_tiles_[i]->AsValue().release()); 468 it != all_tiles_.end(); it++) {
469 state->Append((*it)->AsValue().release());
470 }
474 return state.PassAs<base::Value>(); 471 return state.PassAs<base::Value>();
475 } 472 }
476 473
477 scoped_ptr<base::Value> TileManager::GetMemoryRequirementsAsValue() const { 474 scoped_ptr<base::Value> TileManager::GetMemoryRequirementsAsValue() const {
478 scoped_ptr<base::DictionaryValue> requirements( 475 scoped_ptr<base::DictionaryValue> requirements(
479 new base::DictionaryValue()); 476 new base::DictionaryValue());
480 477
481 size_t memoryRequiredBytes; 478 size_t memoryRequiredBytes;
482 size_t memoryNiceToHaveBytes; 479 size_t memoryNiceToHaveBytes;
483 size_t memoryUsedBytes; 480 size_t memoryUsedBytes;
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 decode_begin_time = base::TimeTicks::Now(); 951 decode_begin_time = base::TimeTicks::Now();
955 pixel_ref->Decode(); 952 pixel_ref->Decode();
956 if (stats) { 953 if (stats) {
957 stats->totalDeferredImageDecodeCount++; 954 stats->totalDeferredImageDecodeCount++;
958 stats->totalDeferredImageDecodeTime += 955 stats->totalDeferredImageDecodeTime +=
959 base::TimeTicks::Now() - decode_begin_time; 956 base::TimeTicks::Now() - decode_begin_time;
960 } 957 }
961 } 958 }
962 959
963 } // namespace cc 960 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tile_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698