| Index: cc/trees/layer_tree_impl.cc
|
| diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
|
| index 97ebb009ecbd7058f0fc321295fb2aec5c006011..80ccf14d7ba303bdda932fea2d83e842240bfc25 100644
|
| --- a/cc/trees/layer_tree_impl.cc
|
| +++ b/cc/trees/layer_tree_impl.cc
|
| @@ -122,7 +122,12 @@ void LayerTreeImpl::Shutdown() {
|
|
|
| void LayerTreeImpl::ReleaseResources() {
|
| if (root_layer_)
|
| - ReleaseResourcesRecursive(root_layer_.get());
|
| + ProcessLayersRecursive(root_layer_.get(), &LayerImpl::ReleaseResources);
|
| +}
|
| +
|
| +void LayerTreeImpl::RecreateResources() {
|
| + if (root_layer_)
|
| + ProcessLayersRecursive(root_layer_.get(), &LayerImpl::RecreateResources);
|
| }
|
|
|
| void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) {
|
| @@ -1159,15 +1164,16 @@ const std::vector<LayerImpl*>& LayerTreeImpl::LayersWithCopyOutputRequest()
|
| return layers_with_copy_output_request_;
|
| }
|
|
|
| -void LayerTreeImpl::ReleaseResourcesRecursive(LayerImpl* current) {
|
| +void LayerTreeImpl::ProcessLayersRecursive(LayerImpl* current,
|
| + void (LayerImpl::*function)()) {
|
| DCHECK(current);
|
| - current->ReleaseResources();
|
| + (current->*function)();
|
| if (current->mask_layer())
|
| - ReleaseResourcesRecursive(current->mask_layer());
|
| + ProcessLayersRecursive(current->mask_layer(), function);
|
| if (current->replica_layer())
|
| - ReleaseResourcesRecursive(current->replica_layer());
|
| + ProcessLayersRecursive(current->replica_layer(), function);
|
| for (size_t i = 0; i < current->children().size(); ++i)
|
| - ReleaseResourcesRecursive(current->children()[i]);
|
| + ProcessLayersRecursive(current->children()[i], function);
|
| }
|
|
|
| template <typename LayerType>
|
|
|