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 8 #include "base/basictypes.h" 9 #include "ui/compositor/compositor_export.h" 10 11 namespace ui { 12 13 class Layer; 14 15 // Scoping object that owns a Layer and all its descendants. 16 class COMPOSITOR_EXPORT LayerTreeOwner { 17 public: 18 explicit LayerTreeOwner(Layer* root); 19 ~LayerTreeOwner(); 20 21 Layer* release() WARN_UNUSED_RESULT { 22 Layer* root = root_; 23 root_ = NULL; 24 return root; 25 } 26 27 Layer* root() { return root_; } 28 const Layer* root() const { return root_; } 29 30 private: 31 Layer* root_; 32 33 DISALLOW_COPY_AND_ASSIGN(LayerTreeOwner); 34 }; 35 36 } // namespace 37 38 #endif // UI_COMPOSITOR_LAYER_TREE_OWNER_H_ 39