| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "flutter/shell/common/layer_tree_holder.h" |
| |
| namespace flutter { |
| |
| LayerTreeHolder::LayerTreeHolder() = default; |
| |
| LayerTreeHolder::~LayerTreeHolder() = default; |
| |
| std::unique_ptr<LayerTree> LayerTreeHolder::Pop() { |
| std::scoped_lock lock(layer_tree_mutex); |
| return std::move(layer_tree_); |
| } |
| |
| void LayerTreeHolder::PushIfNewer( |
| std::unique_ptr<LayerTree> proposed_layer_tree) { |
| std::scoped_lock lock(layer_tree_mutex); |
| if (!layer_tree_ || |
| layer_tree_->target_time() < proposed_layer_tree->target_time()) { |
| layer_tree_ = std::move(proposed_layer_tree); |
| } |
| } |
| |
| bool LayerTreeHolder::IsEmpty() const { |
| std::scoped_lock lock(layer_tree_mutex); |
| return !layer_tree_; |
| } |
| |
| }; // namespace flutter |