Index: cc/trees/layer_tree_host_common.cc |
diff --git a/cc/trees/layer_tree_host_common.cc b/cc/trees/layer_tree_host_common.cc |
index 9cd7eef9e83e59aceb6e941a864f6cae68e2e672..ccaf894505bdb567968dff4ae419797e194108b6 100644 |
--- a/cc/trees/layer_tree_host_common.cc |
+++ b/cc/trees/layer_tree_host_common.cc |
@@ -81,7 +81,7 @@ inline gfx::Rect CalculateVisibleRectWithCachedLayerRect( |
minimal_surface_rect.Intersect(layer_rect_in_target_space); |
if (minimal_surface_rect.IsEmpty()) |
- return gfx::Rect(); |
+ return gfx::Rect(); |
// Project the corners of the target surface rect into the layer space. |
// This bounding rectangle may be larger than it needs to be (being |
@@ -919,6 +919,20 @@ gfx::Transform ComputeScrollCompensationMatrixForChildren( |
} |
template <typename LayerType> |
+static inline void UpdateLayerScaleDrawProperties( |
+ LayerType* layer, |
+ float ideal_contents_scale, |
+ float maximum_animation_contents_scale, |
+ float page_scale_factor, |
+ float device_scale_factor) { |
+ layer->draw_properties().ideal_contents_scale = ideal_contents_scale; |
+ layer->draw_properties().maximum_animation_contents_scale = |
+ maximum_animation_contents_scale; |
+ layer->draw_properties().page_scale_factor = page_scale_factor; |
+ layer->draw_properties().device_scale_factor = device_scale_factor; |
+} |
+ |
+template <typename LayerType> |
static inline void CalculateContentsScale( |
LayerType* layer, |
float contents_scale, |
@@ -1760,6 +1774,40 @@ static void CalculateDrawPropertiesInternal( |
combined_maximum_animation_contents_scale, |
animating_transform_to_screen); |
+ UpdateLayerScaleDrawProperties( |
+ layer, |
+ ideal_contents_scale, |
+ combined_maximum_animation_contents_scale, |
+ data_from_ancestor.in_subtree_of_page_scale_application_layer |
+ ? globals.page_scale_factor |
+ : 1.f, |
+ globals.device_scale_factor); |
+ |
+ LayerType* mask_layer = layer->mask_layer(); |
+ if (mask_layer) { |
+ UpdateLayerScaleDrawProperties( |
+ mask_layer, |
+ ideal_contents_scale, |
+ combined_maximum_animation_contents_scale, |
+ data_from_ancestor.in_subtree_of_page_scale_application_layer |
+ ? globals.page_scale_factor |
+ : 1.f, |
+ globals.device_scale_factor); |
+ } |
+ |
+ LayerType* replica_mask_layer = |
+ layer->replica_layer() ? layer->replica_layer()->mask_layer() : NULL; |
+ if (replica_mask_layer) { |
+ UpdateLayerScaleDrawProperties( |
+ replica_mask_layer, |
+ ideal_contents_scale, |
+ combined_maximum_animation_contents_scale, |
+ data_from_ancestor.in_subtree_of_page_scale_application_layer |
+ ? globals.page_scale_factor |
+ : 1.f, |
+ globals.device_scale_factor); |
+ } |
+ |
// The draw_transform that gets computed below is effectively the layer's |
// draw_transform, unless the layer itself creates a render_surface. In that |
// case, the render_surface re-parents the transforms. |