GrLayerCache::~GrLayerCache() { SkTDynamicHash<GrCachedLayer, GrCachedLayer::Key>::Iter iter(&fLayerHash); for (; !iter.done(); ++iter) { GrCachedLayer* layer = &(*iter); SkASSERT(0 == layer->uses()); this->unlock(layer); SkDELETE(layer); } SkASSERT(0 == fPictureHash.count()); // The atlas only lets go of its texture when the atlas is deleted. fAtlas.free(); }