Index: cc/contents_scaling_layer.cc |
diff --git a/cc/contents_scaling_layer.cc b/cc/contents_scaling_layer.cc |
index 579af3476991b2b3fbb234bb73cef0af65f0fdd8..a9a8befec014616fe8be19a3c2da93378dd75c4f 100644 |
--- a/cc/contents_scaling_layer.cc |
+++ b/cc/contents_scaling_layer.cc |
@@ -11,7 +11,10 @@ gfx::Size ContentsScalingLayer::computeContentBoundsForScale(float scaleX, float |
return gfx::ToCeiledSize(gfx::ScaleSize(bounds(), scaleX, scaleY)); |
} |
-ContentsScalingLayer::ContentsScalingLayer() { |
+ContentsScalingLayer::ContentsScalingLayer() |
+ : last_update_contents_scale_x_(0.f) |
+ , last_update_contents_scale_y_(0.f) |
+ { |
} |
ContentsScalingLayer::~ContentsScalingLayer() { |
@@ -35,4 +38,18 @@ void ContentsScalingLayer::didUpdateBounds() { |
contentsScaleY()); |
} |
+void ContentsScalingLayer::update( |
+ ResourceUpdateQueue& queue, |
+ const OcclusionTracker* occlusion, |
+ RenderingStats& stats) { |
+ if (drawProperties().contents_scale_x == last_update_contents_scale_x_ && |
+ drawProperties().contents_scale_y == last_update_contents_scale_y_) |
+ return; |
+ |
+ last_update_contents_scale_x_ = drawProperties().contents_scale_x; |
+ last_update_contents_scale_y_ = drawProperties().contents_scale_y; |
+ // Invalidate the whole layer if scale changed. |
+ setNeedsDisplayRect(gfx::Rect(bounds())); |
+} |
+ |
} // namespace cc |