| 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; | 
|  | 
|  |