| Index: cc/layers/tiled_layer.cc
|
| diff --git a/cc/layers/tiled_layer.cc b/cc/layers/tiled_layer.cc
|
| index a65067203783563902edbc06ee677aabbad7f258..24baef526eb67025dbfc24e929aa7db4eb8709a5 100644
|
| --- a/cc/layers/tiled_layer.cc
|
| +++ b/cc/layers/tiled_layer.cc
|
| @@ -334,8 +334,10 @@ bool TiledLayer::UpdateTiles(int left,
|
| return false;
|
| }
|
|
|
| - gfx::Rect paint_rect =
|
| - MarkTilesForUpdate(left, top, right, bottom, ignore_occlusions);
|
| + gfx::Rect update_rect;
|
| + gfx::Rect paint_rect;
|
| + MarkTilesForUpdate(
|
| + &update_rect, &paint_rect, left, top, right, bottom, ignore_occlusions);
|
|
|
| if (occlusion)
|
| occlusion->overdraw_metrics()->DidPaint(paint_rect);
|
| @@ -345,7 +347,7 @@ bool TiledLayer::UpdateTiles(int left,
|
|
|
| *updated = true;
|
| UpdateTileTextures(
|
| - paint_rect, left, top, right, bottom, queue, occlusion);
|
| + update_rect, paint_rect, left, top, right, bottom, queue, occlusion);
|
| return true;
|
| }
|
|
|
| @@ -422,12 +424,13 @@ bool TiledLayer::HaveTexturesForTiles(int left,
|
| return true;
|
| }
|
|
|
| -gfx::Rect TiledLayer::MarkTilesForUpdate(int left,
|
| - int top,
|
| - int right,
|
| - int bottom,
|
| - bool ignore_occlusions) {
|
| - gfx::Rect paint_rect;
|
| +void TiledLayer::MarkTilesForUpdate(gfx::Rect* update_rect,
|
| + gfx::Rect* paint_rect,
|
| + int left,
|
| + int top,
|
| + int right,
|
| + int bottom,
|
| + bool ignore_occlusions) {
|
| for (int j = top; j <= bottom; ++j) {
|
| for (int i = left; i <= right; ++i) {
|
| UpdatableTile* tile = TileAt(i, j);
|
| @@ -437,6 +440,10 @@ gfx::Rect TiledLayer::MarkTilesForUpdate(int left,
|
| continue;
|
| if (tile->occluded && !ignore_occlusions)
|
| continue;
|
| +
|
| + // Prepare update rect from original dirty rects.
|
| + update_rect->Union(tile->dirty_rect);
|
| +
|
| // TODO(reveman): Decide if partial update should be allowed based on cost
|
| // of update. https://bugs.webkit.org/show_bug.cgi?id=77376
|
| if (tile->is_dirty() &&
|
| @@ -455,14 +462,14 @@ gfx::Rect TiledLayer::MarkTilesForUpdate(int left,
|
| }
|
| }
|
|
|
| - paint_rect.Union(tile->dirty_rect);
|
| + paint_rect->Union(tile->dirty_rect);
|
| tile->MarkForUpdate();
|
| }
|
| }
|
| - return paint_rect;
|
| }
|
|
|
| -void TiledLayer::UpdateTileTextures(gfx::Rect paint_rect,
|
| +void TiledLayer::UpdateTileTextures(gfx::Rect update_rect,
|
| + gfx::Rect paint_rect,
|
| int left,
|
| int top,
|
| int right,
|
| @@ -477,7 +484,7 @@ void TiledLayer::UpdateTileTextures(gfx::Rect paint_rect,
|
| float height_scale =
|
| paint_properties().bounds.height() /
|
| static_cast<float>(content_bounds().height());
|
| - update_rect_ = gfx::ScaleRect(paint_rect, width_scale, height_scale);
|
| + update_rect_ = gfx::ScaleRect(update_rect, width_scale, height_scale);
|
|
|
| // Calling PrepareToUpdate() calls into WebKit to paint, which may have the
|
| // side effect of disabling compositing, which causes our reference to the
|
|
|