diff options
Diffstat (limited to 'Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp')
-rw-r--r-- | Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp b/Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp index 92637fc83..27705f324 100644 --- a/Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp +++ b/Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp @@ -117,6 +117,17 @@ IntRect CCLayerTilingData::tileRect(const Tile* tile) const void CCLayerTilingData::setBounds(const IntSize& size) { m_tilingData.setTotalSize(size.width(), size.height()); + + // Any tiles completely outside our new bounds are invalid and should be dropped. + int left, top, right, bottom; + layerRectToTileIndices(IntRect(IntPoint(), size), left, top, right, bottom); + Vector<TileMapKey> invalidTileKeys; + for (TileMap::const_iterator it = m_tiles.begin(); it != m_tiles.end(); ++it) { + if (it->first.first > right || it->first.second > bottom) + invalidTileKeys.append(it->first); + } + for (size_t i = 0; i < invalidTileKeys.size(); ++i) + m_tiles.remove(invalidTileKeys[i]); } IntSize CCLayerTilingData::bounds() const |