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

Unified Diff: cc/tile.h

Issue 12082086: cc: Improve tile deletion and general tile manager performance. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Detach managed state from tiles 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 side-by-side diff with in-line comments
Download patch
Index: cc/tile.h
diff --git a/cc/tile.h b/cc/tile.h
index d438d8ef94408ab933df259a0f1f839d3b3ed2a6..7e6339d6473e2cee35c3023fea418edb40353682 100644
--- a/cc/tile.h
+++ b/cc/tile.h
@@ -49,33 +49,43 @@ class CC_EXPORT Tile : public base::RefCounted<Tile> {
// Returns 0 if not drawable.
ResourceProvider::ResourceId GetResourceId() const {
- if (!managed_state_.resource)
+ if (!managed_state_)
return 0;
- if (managed_state_.resource_is_being_initialized)
+ if (!managed_state_->resource)
+ return 0;
+ if (managed_state_->resource_is_being_initialized)
return 0;
- return managed_state_.resource->id();
+ return managed_state_->resource->id();
}
const gfx::Rect& opaque_rect() const { return opaque_rect_; }
- bool contents_swizzled() const { return managed_state_.contents_swizzled; }
+ bool contents_swizzled() const {
+ CHECK(managed_state_);
+ return managed_state_->contents_swizzled;
+ }
float contents_scale() const { return contents_scale_; }
gfx::Rect content_rect() const { return content_rect_; }
void set_picture_pile(scoped_refptr<PicturePileImpl> pile) {
- picture_pile_ = pile;
+ picture_pile_ = pile;
}
- ManagedTileState& ManagedStateForTesting() { return managed_state_; }
+ ManagedTileState* ManagedStateForTesting() { return managed_state_.get(); }
private:
// Methods called by by tile manager.
friend class TileManager;
friend class BinComparator;
- ManagedTileState& managed_state() { return managed_state_; }
- const ManagedTileState& managed_state() const { return managed_state_; }
+ ManagedTileState* managed_state() { return managed_state_.get(); }
+ const ManagedTileState* managed_state() const {
+ return managed_state_.get();
+ }
+ void set_managed_state(ManagedTileState* managed_state) {
+ managed_state_ = managed_state;
+ }
inline size_t bytes_consumed_if_allocated() const {
DCHECK(format_ == GL_RGBA);
@@ -96,7 +106,7 @@ class CC_EXPORT Tile : public base::RefCounted<Tile> {
gfx::Rect opaque_rect_;
TilePriority priority_[2];
- ManagedTileState managed_state_;
+ scoped_refptr<ManagedTileState> managed_state_;
};
} // namespace cc
« no previous file with comments | « cc/picture_layer_tiling_set_unittest.cc ('k') | cc/tile_manager.h » ('j') | cc/tile_manager.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698