Flutter Engine
embedder_render_target.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_H_
6 #define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_H_
7 
8 #include "flutter/fml/closure.h"
9 #include "flutter/fml/macros.h"
10 #include "flutter/shell/platform/embedder/embedder.h"
11 #include "third_party/skia/include/core/SkCanvas.h"
12 #include "third_party/skia/include/core/SkSurface.h"
13 
14 namespace flutter {
15 
16 //------------------------------------------------------------------------------
17 /// @brief Describes a surface whose backing store is managed by the
18 /// embedder. The type of surface depends on the client rendering
19 /// API used. The embedder is notified of the collection of this
20 /// render target via a callback.
21 ///
23  public:
24  //----------------------------------------------------------------------------
25  /// @brief Creates a render target whose backing store is managed by the
26  /// embedder. The way this render target is exposed to the engine
27  /// is via an SkSurface and a callback that is invoked by this
28  /// object in its destructor.
29  ///
30  /// @param[in] backing_store The backing store describing this render
31  /// target.
32  /// @param[in] render_surface The surface for this target.
33  /// @param[in] on_release The callback to invoke (eventually forwarded
34  /// to the embedder) when the backing store is no
35  /// longer required by the engine.
36  ///
38  sk_sp<SkSurface> render_surface,
39  fml::closure on_release);
40 
41  //----------------------------------------------------------------------------
42  /// @brief Destroys this instance of the render target and invokes the
43  /// callback for the embedder to release its resource associated
44  /// with the particular backing store.
45  ///
47 
48  //----------------------------------------------------------------------------
49  /// @brief A render surface the rasterizer can use to draw into the
50  /// backing store of this render target.
51  ///
52  /// @return The render surface.
53  ///
54  sk_sp<SkSurface> GetRenderSurface() const;
55 
56  //----------------------------------------------------------------------------
57  /// @brief The embedder backing store descriptor. This is the descriptor
58  /// that was given to the engine by the embedder. This descriptor
59  /// may contain context the embedder can use to associate it
60  /// resources with the compositor layers when they are given back
61  /// to it in present callback. The engine does not use this in any
62  /// way.
63  ///
64  /// @return The backing store.
65  ///
66  const FlutterBackingStore* GetBackingStore() const;
67 
68  private:
69  FlutterBackingStore backing_store_;
70  sk_sp<SkSurface> render_surface_;
71  fml::closure on_release_;
72 
73  FML_DISALLOW_COPY_AND_ASSIGN(EmbedderRenderTarget);
74 };
75 
76 } // namespace flutter
77 
78 #endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_H_
const FlutterBackingStore * GetBackingStore() const
The embedder backing store descriptor. This is the descriptor that was given to the engine by the emb...
Describes a surface whose backing store is managed by the embedder. The type of surface depends on th...
~EmbedderRenderTarget()
Destroys this instance of the render target and invokes the callback for the embedder to release its ...
std::function< void()> closure
Definition: closure.h:14
sk_sp< SkSurface > GetRenderSurface() const
A render surface the rasterizer can use to draw into the backing store of this render target...
EmbedderRenderTarget(FlutterBackingStore backing_store, sk_sp< SkSurface > render_surface, fml::closure on_release)
Creates a render target whose backing store is managed by the embedder. The way this render target is...