| Index: cc/resources/picture_layer_tiling_set.cc
|
| diff --git a/cc/resources/picture_layer_tiling_set.cc b/cc/resources/picture_layer_tiling_set.cc
|
| index 93d85f7b22e33212fc4ef30436317bd6f8978d6e..7c482bd7d30f4980562300bdf893a4a760326eec 100644
|
| --- a/cc/resources/picture_layer_tiling_set.cc
|
| +++ b/cc/resources/picture_layer_tiling_set.cc
|
| @@ -55,7 +55,8 @@ PictureLayerTilingSet::~PictureLayerTilingSet() {
|
|
|
| void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin(
|
| const PictureLayerTilingSet* pending_twin_set,
|
| - const scoped_refptr<RasterSource>& raster_source) {
|
| + const scoped_refptr<RasterSource>& raster_source,
|
| + const Region& layer_invalidation) {
|
| if (pending_twin_set->tilings_.empty()) {
|
| // If the twin (pending) tiling set is empty, it was not updated for the
|
| // current frame. So we drop tilings from our set as well, instead of
|
| @@ -77,7 +78,8 @@ void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin(
|
| this_tiling = tilings_.back();
|
| tiling_sort_required = true;
|
| }
|
| - this_tiling->CloneTilesAndPropertiesFrom(*pending_twin_tiling);
|
| + this_tiling->TakeTilesAndPropertiesFrom(pending_twin_tiling,
|
| + layer_invalidation);
|
| }
|
|
|
| if (tiling_sort_required)
|
| @@ -95,7 +97,8 @@ void PictureLayerTilingSet::UpdateTilingsToCurrentRasterSourceForActivation(
|
|
|
| // Copy over tilings that are shared with the |pending_twin_set| tiling set.
|
| // Also, copy all of the properties from twin tilings.
|
| - CopyTilingsAndPropertiesFromPendingTwin(pending_twin_set, raster_source);
|
| + CopyTilingsAndPropertiesFromPendingTwin(pending_twin_set, raster_source,
|
| + layer_invalidation);
|
|
|
| // If the tiling is not shared (FindTilingWithScale returns nullptr), then
|
| // invalidate tiles and update them to the new raster source.
|
| @@ -146,6 +149,9 @@ void PictureLayerTilingSet::UpdateRasterSourceDueToLCDChange(
|
| for (PictureLayerTiling* tiling : tilings_) {
|
| tiling->SetRasterSourceAndResize(raster_source);
|
| tiling->Invalidate(layer_invalidation);
|
| + // Since the invalidation changed, we need to create any missing tiles in
|
| + // the live tiles rect again.
|
| + tiling->CreateMissingTilesInLiveTilesRect();
|
| tiling->VerifyAllTilesHaveCurrentRasterSource();
|
| }
|
| }
|
|
|