Avi Drissman | 3e1a26c | 2022-09-15 20:26:03 | [diff] [blame] | 1 | // Copyright 2014 The Chromium Authors |
[email protected] | 25e9e1e | 2014-03-11 16:26:02 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #include "ui/compositor/layer_tree_owner.h" | ||||
6 | |||||
Ali Hijazi | e63cbaf6 | 2023-12-20 19:29:35 | [diff] [blame] | 7 | #include "base/memory/raw_ptr.h" |
[email protected] | 25e9e1e | 2014-03-11 16:26:02 | [diff] [blame] | 8 | #include "ui/compositor/layer.h" |
9 | |||||
10 | namespace ui { | ||||
11 | |||||
12 | namespace { | ||||
13 | |||||
14 | // Deletes |layer| and all its descendants. | ||||
15 | void DeepDeleteLayers(Layer* layer) { | ||||
Ali Hijazi | e63cbaf6 | 2023-12-20 19:29:35 | [diff] [blame] | 16 | std::vector<raw_ptr<Layer, VectorExperimental>> children = layer->children(); |
17 | for (std::vector<raw_ptr<Layer, VectorExperimental>>::const_iterator it = | ||||
18 | children.begin(); | ||||
19 | it != children.end(); ++it) { | ||||
[email protected] | 25e9e1e | 2014-03-11 16:26:02 | [diff] [blame] | 20 | Layer* child = *it; |
21 | DeepDeleteLayers(child); | ||||
22 | } | ||||
23 | delete layer; | ||||
24 | } | ||||
25 | |||||
26 | } // namespace | ||||
27 | |||||
domlaskowski | 4b33bfe | 2016-10-27 00:34:22 | [diff] [blame] | 28 | LayerTreeOwner::LayerTreeOwner(std::unique_ptr<Layer> root) |
29 | : root_(root.release()) {} | ||||
[email protected] | 25e9e1e | 2014-03-11 16:26:02 | [diff] [blame] | 30 | |
31 | LayerTreeOwner::~LayerTreeOwner() { | ||||
32 | if (root_) | ||||
33 | DeepDeleteLayers(root_); | ||||
34 | } | ||||
35 | |||||
36 | } // namespace ui |