Index: cc/layers/picture_layer_impl.cc |
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc |
index b2b8def1ad4ca91430fab762063e48576df5c398..0cf42f07a13c9a9a842b2b8699e8804a2c172be9 100644 |
--- a/cc/layers/picture_layer_impl.cc |
+++ b/cc/layers/picture_layer_impl.cc |
@@ -69,6 +69,7 @@ PictureLayerImpl::PictureLayerImpl(LayerTreeImpl* tree_impl, |
ideal_device_scale_(0.f), |
ideal_source_scale_(0.f), |
ideal_contents_scale_(0.f), |
+ last_ideal_source_scale_(0.f), |
raster_page_scale_(0.f), |
raster_device_scale_(0.f), |
raster_source_scale_(0.f), |
@@ -433,6 +434,17 @@ bool PictureLayerImpl::UpdateTiles() { |
AddTilingsForRasterScale(); |
} |
+ // Inform layer tree impl if we will have blurry content because of fixed |
+ // raster scale (note that this check should happen after we |
+ // ReclaculateRasterScales, since that's the function that will determine |
+ // whether our raster scale is fixed. |
+ if (raster_source_scale_is_fixed_ && !has_will_change_transform_hint()) { |
+ if (raster_source_scale_ != ideal_source_scale_) |
+ layer_tree_impl()->SetFixedRasterScaleHasBlurryContent(); |
+ if (ideal_source_scale_ != last_ideal_source_scale_) |
+ layer_tree_impl()->SetFixedRasterScaleAttemptedToChangeScale(); |
+ } |
+ |
if (layer_tree_impl()->IsActiveTree()) |
AddLowResolutionTilingIfNeeded(); |
@@ -1206,6 +1218,7 @@ void PictureLayerImpl::UpdateIdealScales() { |
: 1.f; |
ideal_device_scale_ = layer_tree_impl()->device_scale_factor(); |
ideal_contents_scale_ = std::max(GetIdealContentsScale(), min_contents_scale); |
+ last_ideal_source_scale_ = ideal_source_scale_; |
ideal_source_scale_ = |
ideal_contents_scale_ / ideal_page_scale_ / ideal_device_scale_; |
} |