This sets up API to release OutputSurface from LTHClient.
[chromium-blink-merge.git] / cc / trees / tree_synchronizer.h
blobef13b1dba813715bcf9b26855ae4ebeb3214c1d0
1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_TREES_TREE_SYNCHRONIZER_H_
6 #define CC_TREES_TREE_SYNCHRONIZER_H_
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/base/cc_export.h"
12 namespace cc {
14 class LayerImpl;
15 class LayerTreeImpl;
16 class Layer;
18 class CC_EXPORT TreeSynchronizer {
19 public:
20 // Accepts a Layer tree and returns a reference to a LayerImpl tree that
21 // duplicates the structure of the Layer tree, reusing the LayerImpls in the
22 // tree provided by old_layer_impl_root if possible.
23 static scoped_ptr<LayerImpl> SynchronizeTrees(
24 Layer* layer_root,
25 scoped_ptr<LayerImpl> old_layer_impl_root,
26 LayerTreeImpl* tree_impl);
27 static scoped_ptr<LayerImpl> SynchronizeTrees(
28 LayerImpl* layer_root,
29 scoped_ptr<LayerImpl> old_layer_impl_root,
30 LayerTreeImpl* tree_impl);
32 // Pushes properties from a Layer or LayerImpl tree to a structurally
33 // equivalent LayerImpl tree.
34 static void PushProperties(Layer* layer_root,
35 LayerImpl* layer_impl_root);
36 static void PushProperties(LayerImpl* layer_root, LayerImpl* layer_impl_root);
38 private:
39 TreeSynchronizer(); // Not instantiable.
41 template <typename LayerType>
42 static void PushPropertiesInternal(
43 LayerType* layer,
44 LayerImpl* layer_impl,
45 int* num_dependents_need_push_properties_for_parent);
47 DISALLOW_COPY_AND_ASSIGN(TreeSynchronizer);
50 } // namespace cc
52 #endif // CC_TREES_TREE_SYNCHRONIZER_H_