[email protected] | 25e9e1e | 2014-03-11 16:26:02 | [diff] [blame] | 1 | // Copyright 2014 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. | ||||
4 | |||||
5 | #ifndef UI_COMPOSITOR_LAYER_TREE_OWNER_H_ | ||||
6 | #define UI_COMPOSITOR_LAYER_TREE_OWNER_H_ | ||||
7 | |||||
domlaskowski | 4b33bfe | 2016-10-27 00:34:22 | [diff] [blame] | 8 | #include <memory> |
9 | |||||
pkasting | 5cd8444 | 2014-11-21 01:37:22 | [diff] [blame] | 10 | #include "base/compiler_specific.h" |
avi | 87b8b58 | 2015-12-24 21:35:25 | [diff] [blame] | 11 | #include "base/macros.h" |
[email protected] | 25e9e1e | 2014-03-11 16:26:02 | [diff] [blame] | 12 | #include "ui/compositor/compositor_export.h" |
13 | |||||
14 | namespace ui { | ||||
15 | |||||
16 | class Layer; | ||||
17 | |||||
18 | // Scoping object that owns a Layer and all its descendants. | ||||
19 | class COMPOSITOR_EXPORT LayerTreeOwner { | ||||
20 | public: | ||||
domlaskowski | 4b33bfe | 2016-10-27 00:34:22 | [diff] [blame] | 21 | explicit LayerTreeOwner(std::unique_ptr<Layer> root); |
[email protected] | 25e9e1e | 2014-03-11 16:26:02 | [diff] [blame] | 22 | ~LayerTreeOwner(); |
23 | |||||
[email protected] | d662858c | 2014-04-11 17:46:56 | [diff] [blame] | 24 | Layer* release() WARN_UNUSED_RESULT { |
25 | Layer* root = root_; | ||||
26 | root_ = NULL; | ||||
27 | return root; | ||||
28 | } | ||||
29 | |||||
[email protected] | 25e9e1e | 2014-03-11 16:26:02 | [diff] [blame] | 30 | Layer* root() { return root_; } |
31 | const Layer* root() const { return root_; } | ||||
32 | |||||
33 | private: | ||||
34 | Layer* root_; | ||||
35 | |||||
36 | DISALLOW_COPY_AND_ASSIGN(LayerTreeOwner); | ||||
37 | }; | ||||
38 | |||||
39 | } // namespace | ||||
40 | |||||
41 | #endif // UI_COMPOSITOR_LAYER_TREE_OWNER_H_ |