Index: cc/trees/tree_synchronizer.cc |
diff --git a/cc/trees/tree_synchronizer.cc b/cc/trees/tree_synchronizer.cc |
index 48a9d5bd966e35bb9ca6e8dafc797efde999d537..651aaed7997eb9ae58a004bf7df4813dc4f54171 100644 |
--- a/cc/trees/tree_synchronizer.cc |
+++ b/cc/trees/tree_synchronizer.cc |
@@ -25,6 +25,13 @@ void CollectExistingLayerImplRecursive(ScopedPtrLayerImplMap* old_layers, |
if (!layer_impl) |
return; |
+ layer_impl->ClearScrollbars(); |
+ if (ScrollbarLayerImplBase* scrollbar_layer = |
+ layer_impl->ToScrollbarLayer()) { |
+ scrollbar_layer->ClearClipLayer(); |
+ scrollbar_layer->ClearScrollLayer(); |
+ } |
+ |
OwnedLayerImplList& children = layer_impl->children(); |
for (OwnedLayerImplList::iterator it = children.begin(); |
it != children.end(); |
@@ -54,8 +61,6 @@ scoped_ptr<LayerImpl> SynchronizeTreesInternal( |
scoped_ptr<LayerImpl> new_tree = SynchronizeTreesRecursive( |
&new_layers, &old_layers, layer_root, tree_impl); |
- UpdateScrollbarLayerPointersRecursive(&new_layers, layer_root); |
- |
return new_tree.Pass(); |
} |
@@ -112,11 +117,6 @@ scoped_ptr<LayerImpl> SynchronizeTreesRecursiveInternal( |
layer_impl->SetReplicaLayer(SynchronizeTreesRecursiveInternal( |
new_layers, old_layers, layer->replica_layer(), tree_impl)); |
- // Remove all dangling pointers. The pointers will be setup later in |
- // UpdateScrollbarLayerPointersRecursive phase |
- layer_impl->SetHorizontalScrollbarLayer(NULL); |
- layer_impl->SetVerticalScrollbarLayer(NULL); |
- |
return layer_impl.Pass(); |
} |
@@ -138,54 +138,6 @@ scoped_ptr<LayerImpl> SynchronizeTreesRecursive( |
new_layers, old_layers, layer, tree_impl); |
} |
-template <typename LayerType, typename ScrollbarLayerType> |
-void UpdateScrollbarLayerPointersRecursiveInternal( |
- const RawPtrLayerImplMap* new_layers, |
- LayerType* layer) { |
- if (!layer) |
- return; |
- |
- for (size_t i = 0; i < layer->children().size(); ++i) { |
- UpdateScrollbarLayerPointersRecursiveInternal< |
- LayerType, ScrollbarLayerType>(new_layers, layer->child_at(i)); |
- } |
- |
- ScrollbarLayerType* scrollbar_layer = layer->ToScrollbarLayer(); |
- if (!scrollbar_layer) |
- return; |
- |
- RawPtrLayerImplMap::const_iterator iter = |
- new_layers->find(layer->id()); |
- ScrollbarLayerImplBase* scrollbar_layer_impl = |
- iter != new_layers->end() |
- ? static_cast<ScrollbarLayerImplBase*>(iter->second) |
- : NULL; |
- iter = new_layers->find(scrollbar_layer->ScrollLayerId()); |
- LayerImpl* scroll_layer_impl = |
- iter != new_layers->end() ? iter->second : NULL; |
- |
- DCHECK(scrollbar_layer_impl); |
- DCHECK(scroll_layer_impl); |
- |
- if (scrollbar_layer->orientation() == HORIZONTAL) |
- scroll_layer_impl->SetHorizontalScrollbarLayer(scrollbar_layer_impl); |
- else |
- scroll_layer_impl->SetVerticalScrollbarLayer(scrollbar_layer_impl); |
-} |
- |
-void UpdateScrollbarLayerPointersRecursive(const RawPtrLayerImplMap* new_layers, |
- Layer* layer) { |
- UpdateScrollbarLayerPointersRecursiveInternal<Layer, ScrollbarLayerInterface>( |
- new_layers, layer); |
-} |
- |
-void UpdateScrollbarLayerPointersRecursive(const RawPtrLayerImplMap* new_layers, |
- LayerImpl* layer) { |
- UpdateScrollbarLayerPointersRecursiveInternal< |
- LayerImpl, |
- ScrollbarLayerImplBase>(new_layers, layer); |
-} |
- |
// static |
void TreeSynchronizer::SetNumDependentsNeedPushProperties( |
Layer* layer, size_t num) { |