diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-04 01:08:17 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-04 01:08:17 +0000 |
commit | 00a392b57c9a07c331cab0f67e863cf97efb0924 (patch) | |
tree | e2a322b17f58631eb8a8cd8b02f8df869b6786b8 /cc | |
parent | 30fe19ff40762f1cc3771fb705bd85a736f20515 (diff) | |
download | chromium_src-00a392b57c9a07c331cab0f67e863cf97efb0924.zip chromium_src-00a392b57c9a07c331cab0f67e863cf97efb0924.tar.gz chromium_src-00a392b57c9a07c331cab0f67e863cf97efb0924.tar.bz2 |
cc: Fix pile->CanRaster DCHECK
This DCHECK that was happening was becuase the pile was being set on a
tile that the pile wasn't able to raster (due to missing recordings).
The reason this was occuring is that the pile was being updated in
SyncTilings prior to two calls that deleted tiles due to invalidations,
missing recordings, and layer resizing.
Reordering these calls makes that DCHECK stop happening.
R=vmpstr@chromium.org
BUG=256843
Review URL: https://chromiumcodereview.appspot.com/18083031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210091 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/resources/picture_layer_tiling_set.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/cc/resources/picture_layer_tiling_set.cc b/cc/resources/picture_layer_tiling_set.cc index 459c046..584fb2d 100644 --- a/cc/resources/picture_layer_tiling_set.cc +++ b/cc/resources/picture_layer_tiling_set.cc @@ -67,10 +67,15 @@ void PictureLayerTilingSet::SyncTilings( continue; if (PictureLayerTiling* this_tiling = TilingAtScale(contents_scale)) { this_tiling->set_resolution(other.tilings_[i]->resolution()); - this_tiling->UpdateTilesToCurrentPile(); + + // These two calls must come before updating the pile, because they may + // destroy tiles that the new pile cannot raster. this_tiling->SetLayerBounds(new_layer_bounds); this_tiling->Invalidate(layer_invalidation); + + this_tiling->UpdateTilesToCurrentPile(); this_tiling->CreateMissingTilesInLiveTilesRect(); + DCHECK(this_tiling->tile_size() == client_->CalculateTileSize(this_tiling->ContentRect().size())); continue; |