| Index: Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp
|
| ===================================================================
|
| --- Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp (revision 110452)
|
| +++ Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp (working copy)
|
| @@ -64,6 +64,7 @@
|
| m_updateRect = m_dirtyRect;
|
| m_dirtyRect = IntRect();
|
| }
|
| + bool isDirtyForCurrentFrame() { return !m_dirtyRect.isEmpty() && m_updateRect.isEmpty(); }
|
|
|
| IntRect m_dirtyRect;
|
| IntRect m_updateRect;
|
| @@ -274,7 +275,7 @@
|
| invalidTiles.append(tile);
|
| continue;
|
| }
|
| - if (tile->isDirty())
|
| + if (tile->isDirtyForCurrentFrame())
|
| continue;
|
|
|
| tiledLayer->pushTileProperties(i, j, tile->managedTexture()->textureId(), tile->m_opaqueRect);
|
| @@ -365,12 +366,6 @@
|
|
|
| void TiledLayerChromium::prepareToUpdateTiles(bool idle, int left, int top, int right, int bottom)
|
| {
|
| - // Reset m_updateRect for all tiles.
|
| - for (CCLayerTilingData::TileMap::const_iterator iter = m_tiler->tiles().begin(); iter != m_tiler->tiles().end(); ++iter) {
|
| - UpdatableTile* tile = static_cast<UpdatableTile*>(iter->second.get());
|
| - tile->m_updateRect = IntRect();
|
| - }
|
| -
|
| // Create tiles as needed, expanding a dirty rect to contain all
|
| // the dirty regions currently being drawn. All dirty tiles that are to be painted
|
| // get their m_updateRect set to m_dirtyRect and m_dirtyRect cleared. This way if
|
| @@ -488,6 +483,16 @@
|
| }
|
| }
|
|
|
| +void TiledLayerChromium::resetUpdateState()
|
| +{
|
| + // Reset m_updateRect for all tiles.
|
| + CCLayerTilingData::TileMap::const_iterator end = m_tiler->tiles().end();
|
| + for (CCLayerTilingData::TileMap::const_iterator iter = m_tiler->tiles().begin(); iter != end; ++iter) {
|
| + UpdatableTile* tile = static_cast<UpdatableTile*>(iter->second.get());
|
| + tile->m_updateRect = IntRect();
|
| + }
|
| +}
|
| +
|
| void TiledLayerChromium::prepareToUpdate(const IntRect& layerRect)
|
| {
|
| m_skipsDraw = false;
|
| @@ -497,6 +502,8 @@
|
|
|
| updateBounds();
|
|
|
| + resetUpdateState();
|
| +
|
| if (layerRect.isEmpty() || !m_tiler->numTiles())
|
| return;
|
|
|
|
|