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

Unified Diff: cc/tile.cc

Issue 11364194: Introduce Tile Versions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« cc/tile.h ('K') | « cc/tile.h ('k') | cc/tile_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/tile.cc
diff --git a/cc/tile.cc b/cc/tile.cc
index 536b2efc5e6883cff024a7b2464ba9372ec063c2..6448590becd68db41638f0ba76c6dd23d3e04015 100644
--- a/cc/tile.cc
+++ b/cc/tile.cc
@@ -10,17 +10,60 @@ namespace cc {
Tile::Tile(TileManager* tile_manager,
gfx::Size tile_size,
+ GLenum format,
gfx::Rect rect_inside_picture,
TileQuality quality)
: tile_manager_(tile_manager),
tile_size_(tile_size),
+ format_(format),
rect_inside_picture_(rect_inside_picture),
quality_(quality) {
- tile_manager_->RegisterTile(this);
}
Tile::~Tile() {
- tile_manager_->UnregisterTile(this);
+ for (size_t i = 0; i < versions_.size(); i++)
+ tile_manager_->DidDeleteTileVersion(versions_[i]);
+ versions_.clear();
+}
+
+void Tile::SetPicturePile(int frame_number, scoped_ptr<PicturePile> picture_pile) {
+ DCHECK(GetVersion(frame_number) == NULL);
+ TileVersion* version = new TileVersion(this, frame_number, picture_pile.Pass());
+ versions_.push_back(version);
+ tile_manager_->DidCreateTileVersion(version);
+}
+
+void Tile::ModifyPriority(int frame_number, const TilePriority& priority) {
+ TileVersion* version = GetVersion(frame_number);
+ DCHECK(version) <<
+ "Tile must have a picture pile before its priority can be modified";
+ tile_manager_->WillModifyTileVersionPriority(version, priority);
+ version->ModifyPriority(priority);
+}
+
+ResourceProvider::ResourceId Tile::GetDrawableResourceId(int frame_number) {
+ TileVersion* version = GetVersion(frame_number);
+ if (!version)
+ return 0;
+ return version->resource_id();
+}
+
+void Tile::DeleteVersionOnRequestOfTileManager(int frame_number) {
+ for (size_t i = 0; i < frame_number; i++) {
+ if (versions_[i]->frame_number() == frame_number) {
+ versions_.erase(versions_.begin() + frame_number);
+ return;
+ }
+ }
+ DCHECK(false) << "Could not find version";
+}
+
+TileVersion* Tile::GetVersion(int frame_number) {
+ for (size_t i = 0; i < frame_number; i++) {
+ if (versions_[i]->frame_number() == frame_number)
+ return versions_[i];
+ }
+ return NULL;
}
} // namespace cc
« cc/tile.h ('K') | « cc/tile.h ('k') | cc/tile_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698