// 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_SURFACE_SOFTWARE_H_ #define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_SURFACE_SOFTWARE_H_ #include "flutter/fml/macros.h" #include "flutter/shell/gpu/gpu_surface_software.h" #include "flutter/shell/platform/embedder/embedder_external_view_embedder.h" #include "flutter/shell/platform/embedder/embedder_surface.h" namespace flutter { class EmbedderSurfaceSoftware final : public EmbedderSurface, public GPUSurfaceSoftwareDelegate { public: struct SoftwareDispatchTable { std::function software_present_backing_store; // required }; EmbedderSurfaceSoftware( SoftwareDispatchTable software_dispatch_table, std::unique_ptr external_view_embedder); ~EmbedderSurfaceSoftware() override; private: bool valid_ = false; SoftwareDispatchTable software_dispatch_table_; sk_sp sk_surface_; std::unique_ptr external_view_embedder_; // |EmbedderSurface| bool IsValid() const override; // |EmbedderSurface| std::unique_ptr CreateGPUSurface() override; // |EmbedderSurface| sk_sp CreateResourceContext() const override; // |GPUSurfaceSoftwareDelegate| sk_sp AcquireBackingStore(const SkISize& size) override; // |GPUSurfaceSoftwareDelegate| bool PresentBackingStore(sk_sp backing_store) override; // |GPUSurfaceSoftwareDelegate| ExternalViewEmbedder* GetExternalViewEmbedder() override; FML_DISALLOW_COPY_AND_ASSIGN(EmbedderSurfaceSoftware); }; } // namespace flutter #endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_SURFACE_SOFTWARE_H_