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"
18 class CC_EXPORT TreeSynchronizer
{
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(
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
);
39 TreeSynchronizer(); // Not instantiable.
41 template <typename LayerType
>
42 static void PushPropertiesInternal(
44 LayerImpl
* layer_impl
,
45 size_t* num_dependents_need_push_properties_for_parent
);
47 DISALLOW_COPY_AND_ASSIGN(TreeSynchronizer
);
52 #endif // CC_TREES_TREE_SYNCHRONIZER_H_