Chromium Code Reviews| Index: cc/tiled_layer_impl.cc |
| diff --git a/cc/tiled_layer_impl.cc b/cc/tiled_layer_impl.cc |
| index 1d224c544107f65c50291e9dc8a511b043b2c284..d4d7636afb9d97342af932b88de1c7cd64e3c53c 100644 |
| --- a/cc/tiled_layer_impl.cc |
| +++ b/cc/tiled_layer_impl.cc |
| @@ -23,10 +23,15 @@ using namespace std; |
| namespace cc { |
| +// Temporary diagnostic. |
| +static bool safeToDeleteDrawableTile = false; |
| + |
| class DrawableTile : public LayerTilingData::Tile { |
| public: |
| static scoped_ptr<DrawableTile> create() { return make_scoped_ptr(new DrawableTile()); } |
| + virtual ~DrawableTile() { CHECK(safeToDeleteDrawableTile); } |
| + |
| ResourceProvider::ResourceId resourceId() const { return m_resourceId; } |
| void setResourceId(ResourceProvider::ResourceId resourceId) { m_resourceId = resourceId; } |
| bool contentsSwizzled() { return m_contentsSwizzled; } |
| @@ -51,6 +56,10 @@ TiledLayerImpl::TiledLayerImpl(int id) |
| TiledLayerImpl::~TiledLayerImpl() |
| { |
| + safeToDeleteDrawableTile = true; |
| + if (m_tiler) |
| + m_tiler->reset(); |
| + safeToDeleteDrawableTile = false; |
| } |
| ResourceProvider::ResourceId TiledLayerImpl::contentsResourceId() const |
| @@ -92,6 +101,11 @@ DrawableTile* TiledLayerImpl::createTile(int i, int j) |
| scoped_ptr<DrawableTile> tile(DrawableTile::create()); |
| DrawableTile* addedTile = tile.get(); |
| m_tiler->addTile(tile.PassAs<LayerTilingData::Tile>(), i, j); |
| + |
| + // Temporary diagnostic checks. |
| + CHECK(addedTile); |
|
enne (OOO)
2012/12/04 00:57:02
I've added these checks in the past and never gott
|
| + CHECK(tileAt(i, j)); |
| + |
| return addedTile; |
| } |
| @@ -200,11 +214,15 @@ void TiledLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQuad |
| void TiledLayerImpl::setTilingData(const LayerTilingData& tiler) |
| { |
| + safeToDeleteDrawableTile = true; |
| + |
| if (m_tiler) |
| m_tiler->reset(); |
| else |
| m_tiler = LayerTilingData::create(tiler.tileSize(), tiler.hasBorderTexels() ? LayerTilingData::HasBorderTexels : LayerTilingData::NoBorderTexels); |
| *m_tiler = tiler; |
| + |
| + safeToDeleteDrawableTile = false; |
| } |
| void TiledLayerImpl::pushTileProperties(int i, int j, ResourceProvider::ResourceId resourceId, const gfx::Rect& opaqueRect, bool contentsSwizzled) |
| @@ -238,7 +256,11 @@ Region TiledLayerImpl::visibleContentOpaqueRegion() const |
| void TiledLayerImpl::didLoseContext() |
| { |
| + safeToDeleteDrawableTile = true; |
| + // Temporary diagnostic check. |
| + CHECK(m_tiler); |
| m_tiler->reset(); |
| + safeToDeleteDrawableTile = false; |
| } |
| const char* TiledLayerImpl::layerTypeAsString() const |