// 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. #ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_CACHE_H_ #define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_CACHE_H_ #include #include #include #include #include "flutter/fml/macros.h" #include "flutter/shell/platform/embedder/embedder_external_view.h" namespace flutter { //------------------------------------------------------------------------------ /// @brief A cache used to reference render targets that are owned by the /// embedder but needed by th engine to render a frame. /// class EmbedderRenderTargetCache { public: EmbedderRenderTargetCache(); ~EmbedderRenderTargetCache(); using RenderTargets = std::unordered_map, EmbedderExternalView::ViewIdentifier::Hash, EmbedderExternalView::ViewIdentifier::Equal>; std::pair GetExistingTargetsInCache( const EmbedderExternalView::PendingViews& pending_views); std::set> ClearAllRenderTargetsInCache(); void CacheRenderTarget(EmbedderExternalView::ViewIdentifier view_identifier, std::unique_ptr target); size_t GetCachedTargetsCount() const; private: using CachedRenderTargets = std::unordered_map>, EmbedderExternalView::RenderTargetDescriptor::Hash, EmbedderExternalView::RenderTargetDescriptor::Equal>; CachedRenderTargets cached_render_targets_; FML_DISALLOW_COPY_AND_ASSIGN(EmbedderRenderTargetCache); }; } // namespace flutter #endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_CACHE_H_