summaryrefslogtreecommitdiffstats
path: root/cc/layers/picture_layer_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cc/layers/picture_layer_impl.cc')
-rw-r--r--cc/layers/picture_layer_impl.cc27
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 {