Flutter Engine
 
Loading...
Searching...
No Matches
external_view_embedder_wrapper.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_ANDROID_EXTERNAL_VIEW_EMBEDDER_EXTERNAL_VIEW_EMBEDDER_WRAPPER_H_
6#define FLUTTER_SHELL_PLATFORM_ANDROID_EXTERNAL_VIEW_EMBEDDER_EXTERNAL_VIEW_EMBEDDER_WRAPPER_H_
7
15
16namespace flutter {
17
18//------------------------------------------------------------------------------
19/// A wrapper for the android external view embedder classes that dynamically
20/// selects the implementation to use.
21///
22/// This wrapper is used to defer external view embedder construction until the
23/// impeller context setup has completed on the raster thread.
25 public:
27 bool meets_hcpp_criteria,
28 const AndroidContext& android_context,
29 std::shared_ptr<PlatformViewAndroidJNI> jni_facade,
30 std::shared_ptr<AndroidSurfaceFactory> surface_factory,
31 const TaskRunners& task_runners);
32
33 // |ExternalViewEmbedder|
35 int64_t view_id,
36 std::unique_ptr<flutter::EmbeddedViewParams> params) override;
37
38 // |ExternalViewEmbedder|
39 DlCanvas* CompositeEmbeddedView(int64_t view_id) override;
40
41 // |ExternalViewEmbedder|
43 int64_t flutter_view_id,
44 GrDirectContext* context,
45 const std::shared_ptr<impeller::AiksContext>& aiks_context,
46 std::unique_ptr<SurfaceFrame> frame) override;
47
48 // |ExternalViewEmbedder|
50 const fml::RefPtr<fml::RasterThreadMerger>& raster_thread_merger)
51 override;
52
53 // |ExternalViewEmbedder|
54 DlCanvas* GetRootCanvas() override;
55
56 // |ExternalViewEmbedder|
57 void BeginFrame(GrDirectContext* context,
59 raster_thread_merger) override;
60
61 // |ExternalViewEmbedder|
62 void PrepareFlutterView(DlISize frame_size,
63 double device_pixel_ratio) override;
64
65 // |ExternalViewEmbedder|
66 void CancelFrame() override;
67
68 // |ExternalViewEmbedder|
69 void EndFrame(bool should_resubmit_frame,
71 raster_thread_merger) override;
72
73 // |ExternalViewEmbedder|
74 bool SupportsDynamicThreadMerging() override;
75
76 // |ExternalViewEmbedder|
77 void Teardown() override;
78
79 private:
80 void EnsureInitialized();
81
82 // Whether the device has hcpp mode initialized and is at least API 34.
83 const bool meets_hcpp_criteria_;
84 const AndroidContext& android_context_;
85 const TaskRunners& task_runners_;
86 std::shared_ptr<PlatformViewAndroidJNI> jni_facade_;
87 std::shared_ptr<AndroidSurfaceFactory> surface_factory_;
88 std::unique_ptr<AndroidExternalViewEmbedder> non_hcpp_view_embedder_;
89 std::unique_ptr<AndroidExternalViewEmbedder2> hcpp_view_embedder_;
90};
91
92} // namespace flutter
93
94#endif // FLUTTER_SHELL_PLATFORM_ANDROID_EXTERNAL_VIEW_EMBEDDER_EXTERNAL_VIEW_EMBEDDER_WRAPPER_H_
Holds state that is shared across Android surfaces.
void PrepareFlutterView(DlISize frame_size, double device_pixel_ratio) override
DlCanvas * CompositeEmbeddedView(int64_t view_id) override
void PrerollCompositeEmbeddedView(int64_t view_id, std::unique_ptr< flutter::EmbeddedViewParams > params) override
void EndFrame(bool should_resubmit_frame, const fml::RefPtr< fml::RasterThreadMerger > &raster_thread_merger) override
PostPrerollResult PostPrerollAction(const fml::RefPtr< fml::RasterThreadMerger > &raster_thread_merger) override
void BeginFrame(GrDirectContext *context, const fml::RefPtr< fml::RasterThreadMerger > &raster_thread_merger) override
void SubmitFlutterView(int64_t flutter_view_id, GrDirectContext *context, const std::shared_ptr< impeller::AiksContext > &aiks_context, std::unique_ptr< SurfaceFrame > frame) override
Developer-facing API for rendering anything within the engine.
Definition dl_canvas.h:32
const EmbeddedViewParams * params
G_BEGIN_DECLS FlutterViewId view_id