diff options
Diffstat (limited to 'cc/layers/picture_layer_impl.cc')
-rw-r--r-- | cc/layers/picture_layer_impl.cc | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc index 8c50b94..00bb878 100644 --- a/cc/layers/picture_layer_impl.cc +++ b/cc/layers/picture_layer_impl.cc @@ -548,13 +548,15 @@ void PictureLayerImpl::SyncFromActiveLayer(const PictureLayerImpl* other) { invalidation_.Union(difference_region); tilings_->RemoveAllTilings(); - tilings_->AddTilingsToMatchScales(*other->tilings_, MinimumContentsScale()); + if (CanHaveTilings()) + tilings_->AddTilingsToMatchScales(*other->tilings_, MinimumContentsScale()); + DCHECK(bounds() == tilings_->layer_bounds()); } void PictureLayerImpl::SyncTiling( const PictureLayerTiling* tiling) { - if (!DrawsContent() || tiling->contents_scale() < MinimumContentsScale()) + if (!CanHaveTilingWithScale(tiling->contents_scale())) return; tilings_->AddTiling(tiling->contents_scale()); @@ -652,7 +654,8 @@ bool PictureLayerImpl::AreVisibleResourcesReady() const { } PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) { - DCHECK(contents_scale >= MinimumContentsScale()); + DCHECK(CanHaveTilingWithScale(contents_scale)) << + "contents_scale: " << contents_scale; PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale); @@ -703,7 +706,7 @@ void PictureLayerImpl::ManageTilings(bool animating_transform_to_screen) { DCHECK(ideal_device_scale_); DCHECK(ideal_source_scale_); - if (pile_->recorded_region().IsEmpty()) + if (!CanHaveTilings()) return; bool change_target_tiling = @@ -943,6 +946,22 @@ void PictureLayerImpl::ResetRasterScale() { low_res_raster_contents_scale_ = 0.f; } +bool PictureLayerImpl::CanHaveTilings() const { + if (!DrawsContent()) + return false; + if (pile_->recorded_region().IsEmpty()) + return false; + return true; +} + +bool PictureLayerImpl::CanHaveTilingWithScale(float contents_scale) const { + if (!CanHaveTilings()) + return false; + if (contents_scale < MinimumContentsScale()) + return false; + return true; +} + void PictureLayerImpl::GetDebugBorderProperties( SkColor* color, float* width) const { |