Index: cc/trees/layer_tree_host.cc |
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc |
index 53bfcb8fc22d597432c2fbeefa1c6aedcc1501f8..01ca6994cae41b402ef13268305ab84a75093ad7 100644 |
--- a/cc/trees/layer_tree_host.cc |
+++ b/cc/trees/layer_tree_host.cc |
@@ -509,6 +509,8 @@ void LayerTreeHost::SetNeedsCommit() { |
void LayerTreeHost::SetNeedsFullTreeSync() { |
needs_full_tree_sync_ = true; |
+ |
+ property_trees_.needs_rebuild = true; |
SetNeedsCommit(); |
} |
@@ -626,6 +628,7 @@ void LayerTreeHost::SetViewportSize(const gfx::Size& device_viewport_size) { |
device_viewport_size_ = device_viewport_size; |
+ property_trees_.needs_rebuild = true; |
SetNeedsCommit(); |
} |
@@ -649,7 +652,10 @@ void LayerTreeHost::SetTopControlsShownRatio(float ratio) { |
void LayerTreeHost::ApplyPageScaleDeltaFromImplSide(float page_scale_delta) { |
DCHECK(CommitRequested()); |
+ if (page_scale_delta == 1.f) |
+ return; |
page_scale_factor_ *= page_scale_delta; |
+ property_trees_.needs_rebuild = true; |
} |
void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, |
@@ -663,6 +669,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, |
page_scale_factor_ = page_scale_factor; |
min_page_scale_factor_ = min_page_scale_factor; |
max_page_scale_factor_ = max_page_scale_factor; |
+ property_trees_.needs_rebuild = true; |
SetNeedsCommit(); |
} |
@@ -796,7 +803,6 @@ bool LayerTreeHost::UpdateLayers(Layer* root_layer, |
// that we won't be able to detect if a layer is part of |update_list|. |
// Change this if this information is required. |
int render_surface_layer_list_id = 0; |
- PropertyTrees property_trees; |
LayerTreeHostCommon::CalcDrawPropsMainInputs inputs( |
root_layer, device_viewport_size(), gfx::Transform(), |
device_scale_factor_, page_scale_factor_, page_scale_layer, |
@@ -806,7 +812,7 @@ bool LayerTreeHost::UpdateLayers(Layer* root_layer, |
can_render_to_separate_surface, |
settings_.layer_transforms_should_scale_layer_contents, |
settings_.verify_property_trees, &update_list, |
- render_surface_layer_list_id, &property_trees); |
+ render_surface_layer_list_id, &property_trees_); |
LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
} |
@@ -1119,6 +1125,7 @@ void LayerTreeHost::SetDeviceScaleFactor(float device_scale_factor) { |
return; |
device_scale_factor_ = device_scale_factor; |
+ property_trees_.needs_rebuild = true; |
SetNeedsCommit(); |
} |
@@ -1139,8 +1146,12 @@ void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { |
if (!settings_.accelerated_animation_enabled) |
return; |
- if (animation_registrar_->AnimateLayers(monotonic_time)) |
- animation_registrar_->UpdateAnimationState(true, NULL); |
+ AnimationEventsVector events; |
+ if (animation_registrar_->AnimateLayers(monotonic_time)) { |
+ animation_registrar_->UpdateAnimationState(true, &events); |
+ if (!events.empty()) |
+ property_trees_.needs_rebuild = true; |
+ } |
} |
UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { |