Index: cc/tile_manager.cc |
diff --git a/cc/tile_manager.cc b/cc/tile_manager.cc |
index 68f399c3bdc417ac0565336b7a22ee90acce2744..ced363c0314db737cbba7cbe011cdd7129e0b966 100644 |
--- a/cc/tile_manager.cc |
+++ b/cc/tile_manager.cc |
@@ -8,26 +8,56 @@ |
namespace cc { |
-TileManager::TileManager(TileManagerClient* client) { |
+TileManager::TileManager(TileManagerClient* client) |
+ : client_(client) |
+ , manage_tiles_pending_(false) |
+{ |
} |
TileManager::~TileManager() { |
- DCHECK(registered_tiles_.size() == 0); |
+ ManageTiles(); |
+ DCHECK(tile_versions_.size() == 0); |
} |
-void TileManager::RegisterTile(Tile* tile) { |
- registered_tiles_.push_back(tile); |
+void TileManager::SetGlobalState(const GlobalStateThatImpactsTilePriority& global_state) { |
+ global_state_ = global_state; |
+ ScheduleManageTiles(); |
} |
-void TileManager::UnregisterTile(Tile* tile) { |
- // TODO(nduca): Known slow. Shrug. Fish need frying. |
- for (size_t i = 0; i < registered_tiles_.size(); i++) { |
- if (registered_tiles_[i] == tile) { |
- registered_tiles_.erase(registered_tiles_.begin() + i); |
+void TileManager::ManageTiles() { |
+ // Figure out how much memory we would be willing to give out. |
+ |
+ // Free up memory. |
+ |
+ // GC old versions. |
+} |
+ |
+void TileManager::DidCreateTileVersion(TileVersion* version) { |
+ tile_versions_.push_back(version); |
+ ScheduleManageTiles(); |
+} |
+ |
+void TileManager::DidDeleteTileVersion(TileVersion* version) { |
+ for (size_t i = 0; i < tile_versions_.size(); i++) { |
+ if (tile_versions_[i] == version) { |
+ tile_versions_.erase(tile_versions_.begin() + i); |
return; |
} |
} |
- DCHECK(false) << "Tile " << tile << " wasnt regitered."; |
+ DCHECK(false) << "Could not find tile version."; |
+} |
+ |
+void TileManager::WillModifyTileVersionPriority(TileVersion*, const TilePriority& new_priority) { |
+ // TODO(nduca): Do something smarter if reprioritization turns out to be |
+ // costly. |
+ ScheduleManageTiles(); |
+} |
+ |
+void TileManager::ScheduleManageTiles() { |
+ if (manage_tiles_pending_) |
+ return; |
+ ScheduleManageTiles(); |
+ manage_tiles_pending_ = true; |
} |
} |