Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
flutter::FlutterEngine Class Reference

#include <flutter_engine.h>

Inheritance diagram for flutter::FlutterEngine:
flutter::PluginRegistry flutter::PluginRegistry

Public Member Functions

 FlutterEngine ()
 
virtual ~FlutterEngine ()
 
 FlutterEngine (FlutterEngine const &)=delete
 
FlutterEngineoperator= (FlutterEngine const &)=delete
 
bool Start (const std::string &icu_data_path, const std::string &assets_path, const std::vector< std::string > &arguments, const std::string &aot_library_path="")
 
void ShutDown ()
 
void RunEventLoopWithTimeout (std::chrono::milliseconds timeout=std::chrono::milliseconds::max())
 
FlutterDesktopPluginRegistrarRef GetRegistrarForPlugin (const std::string &plugin_name) override
 
 FlutterEngine (const DartProject &project)
 
virtual ~FlutterEngine ()
 
 FlutterEngine (FlutterEngine const &)=delete
 
FlutterEngineoperator= (FlutterEngine const &)=delete
 
bool Run ()
 
bool Run (const char *entry_point)
 
void ShutDown ()
 
std::chrono::nanoseconds ProcessMessages ()
 
void ReloadSystemFonts ()
 
void ReloadPlatformBrightness ()
 
FlutterDesktopPluginRegistrarRef GetRegistrarForPlugin (const std::string &plugin_name) override
 
BinaryMessengermessenger ()
 
void SetNextFrameCallback (std::function< void()> callback)
 
bool IsPlatformThread () const
 
void PostPlatformThreadTask (std::function< void()> callback)
 
std::optional< LRESULTProcessExternalWindowMessage (HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
 
bool GetGraphicsAdapter (IDXGIAdapter **adapter_out)
 
- Public Member Functions inherited from flutter::PluginRegistry
 PluginRegistry ()=default
 
virtual ~PluginRegistry ()=default
 
 PluginRegistry (PluginRegistry const &)=delete
 
PluginRegistryoperator= (PluginRegistry const &)=delete
 

Friends

class FlutterViewController
 

Detailed Description

Definition at line 21 of file flutter_engine.h.

Constructor & Destructor Documentation

◆ FlutterEngine() [1/4]

FlutterEngine::FlutterEngine ( )
explicit

Definition at line 12 of file flutter_engine.cc.

12{}

◆ ~FlutterEngine() [1/2]

FlutterEngine::~FlutterEngine ( )
virtual

Definition at line 14 of file flutter_engine.cc.

14{}

◆ FlutterEngine() [2/4]

flutter::FlutterEngine::FlutterEngine ( FlutterEngine const &  )
delete

◆ FlutterEngine() [3/4]

FlutterEngine::FlutterEngine ( const DartProject project)
explicit

Definition at line 15 of file flutter_engine.cc.

15 {
16 FlutterDesktopEngineProperties c_engine_properties = {};
17 c_engine_properties.assets_path = project.assets_path().c_str();
18 c_engine_properties.icu_data_path = project.icu_data_path().c_str();
19 c_engine_properties.aot_library_path = project.aot_library_path().c_str();
20 c_engine_properties.dart_entrypoint = project.dart_entrypoint().c_str();
21 c_engine_properties.gpu_preference =
22 static_cast<FlutterDesktopGpuPreference>(project.gpu_preference());
23 c_engine_properties.ui_thread_policy =
24 static_cast<FlutterDesktopUIThreadPolicy>(project.ui_thread_policy());
25 c_engine_properties.accessibility_mode =
27 project.accessibility_mode());
28 c_engine_properties.impeller_switch =
29 static_cast<FlutterDesktopImpellerSwitch>(project.impeller_switch());
30
31 const std::vector<std::string>& entrypoint_args =
32 project.dart_entrypoint_arguments();
33 std::vector<const char*> entrypoint_argv;
34 std::transform(
35 entrypoint_args.begin(), entrypoint_args.end(),
36 std::back_inserter(entrypoint_argv),
37 [](const std::string& arg) -> const char* { return arg.c_str(); });
38
39 c_engine_properties.dart_entrypoint_argc =
40 static_cast<int>(entrypoint_argv.size());
41 c_engine_properties.dart_entrypoint_argv =
42 entrypoint_argv.empty() ? nullptr : entrypoint_argv.data();
43
44 engine_ = FlutterDesktopEngineCreate(&c_engine_properties);
45
46 auto core_messenger = FlutterDesktopEngineGetMessenger(engine_);
47 messenger_ = std::make_unique<BinaryMessengerImpl>(core_messenger);
48}
FlutterDesktopUIThreadPolicy
FlutterDesktopGpuPreference
FlutterDesktopImpellerSwitch
FlutterDesktopAccessibilityMode
FlutterDesktopAccessibilityMode accessibility_mode
FlutterDesktopImpellerSwitch impeller_switch
FlutterDesktopUIThreadPolicy ui_thread_policy
FlutterDesktopGpuPreference gpu_preference
FlutterDesktopEngineRef FlutterDesktopEngineCreate(const FlutterDesktopEngineProperties *engine_properties)
FlutterDesktopMessengerRef FlutterDesktopEngineGetMessenger(FlutterDesktopEngineRef engine)

References flutter::DartProject::accessibility_mode(), FlutterDesktopEngineProperties::accessibility_mode, FlutterDesktopEngineProperties::aot_library_path, FlutterDesktopEngineProperties::assets_path, flutter::DartProject::dart_entrypoint(), FlutterDesktopEngineProperties::dart_entrypoint, FlutterDesktopEngineProperties::dart_entrypoint_argc, flutter::DartProject::dart_entrypoint_arguments(), FlutterDesktopEngineProperties::dart_entrypoint_argv, FlutterDesktopEngineCreate(), FlutterDesktopEngineGetMessenger(), flutter::DartProject::gpu_preference(), FlutterDesktopEngineProperties::gpu_preference, FlutterDesktopEngineProperties::icu_data_path, flutter::DartProject::impeller_switch(), FlutterDesktopEngineProperties::impeller_switch, flutter::DartProject::ui_thread_policy(), and FlutterDesktopEngineProperties::ui_thread_policy.

◆ ~FlutterEngine() [2/2]

virtual flutter::FlutterEngine::~FlutterEngine ( )
virtual

◆ FlutterEngine() [4/4]

flutter::FlutterEngine::FlutterEngine ( FlutterEngine const &  )
delete

Member Function Documentation

◆ GetGraphicsAdapter()

bool flutter::FlutterEngine::GetGraphicsAdapter ( IDXGIAdapter **  adapter_out)
inline

Definition at line 110 of file flutter_engine.h.

110 {
111 return FlutterDesktopEngineGetGraphicsAdapter(engine_, adapter_out);
112 }
bool FlutterDesktopEngineGetGraphicsAdapter(FlutterDesktopEngineRef engine, IDXGIAdapter **adapter_out)

References FlutterDesktopEngineGetGraphicsAdapter().

◆ GetRegistrarForPlugin() [1/2]

FlutterDesktopPluginRegistrarRef FlutterEngine::GetRegistrarForPlugin ( const std::string &  plugin_name)
overridevirtual

Implements flutter::PluginRegistry.

Definition at line 53 of file flutter_engine.cc.

54 {
55 if (!engine_) {
56 std::cerr << "Cannot get plugin registrar on an engine that isn't running; "
57 "call Run first."
58 << std::endl;
59 return nullptr;
60 }
61 return FlutterDesktopGetPluginRegistrar(engine_.get(), plugin_name.c_str());
62}
FlutterDesktopPluginRegistrarRef FlutterDesktopGetPluginRegistrar(FlutterDesktopEngineRef engine, const char *plugin_name)

References FlutterDesktopGetPluginRegistrar().

◆ GetRegistrarForPlugin() [2/2]

FlutterDesktopPluginRegistrarRef flutter::FlutterEngine::GetRegistrarForPlugin ( const std::string &  plugin_name)
overridevirtual

◆ IsPlatformThread()

bool FlutterEngine::IsPlatformThread ( ) const

Definition at line 113 of file flutter_engine.cc.

113 {
114 if (!engine_) {
115 std::cerr
116 << "Cannot check platform thread on an engine that failed creation."
117 << std::endl;
118 return false;
119 }
121}
bool FlutterDesktopEngineIsPlatformThread(FlutterDesktopEngineRef engine)

References FlutterDesktopEngineIsPlatformThread().

◆ messenger()

BinaryMessenger * flutter::FlutterEngine::messenger ( )
inline

Definition at line 80 of file flutter_engine.h.

80{ return messenger_.get(); }

Referenced by flutter::TEST().

◆ operator=() [1/2]

FlutterEngine & flutter::FlutterEngine::operator= ( FlutterEngine const &  )
delete

References Start().

◆ operator=() [2/2]

FlutterEngine & flutter::FlutterEngine::operator= ( FlutterEngine const &  )
delete

◆ PostPlatformThreadTask()

void FlutterEngine::PostPlatformThreadTask ( std::function< void()>  callback)

Definition at line 123 of file flutter_engine.cc.

123 {
124 if (!callback) {
125 return;
126 }
128 engine_,
129 /*callback=*/
130 [](void* user_data) {
131 std::unique_ptr<std::function<void()>> cb{
132 static_cast<std::function<void()>*>(user_data)};
133 (*cb)();
134 },
135 /*on_cancel=*/
136 [](void* user_data) {
137 delete static_cast<std::function<void()>*>(user_data);
138 },
139 /*user_data=*/new std::function<void()>(std::move(callback)));
140}
FlutterDesktopBinaryReply callback
void FlutterDesktopEnginePostPlatformThreadTask(FlutterDesktopEngineRef engine, VoidCallback callback, VoidCallback on_cancel, void *user_data)

References callback, FlutterDesktopEnginePostPlatformThreadTask(), and user_data.

◆ ProcessExternalWindowMessage()

std::optional< LRESULT > FlutterEngine::ProcessExternalWindowMessage ( HWND  hwnd,
UINT  message,
WPARAM  wparam,
LPARAM  lparam 
)

Definition at line 142 of file flutter_engine.cc.

146 {
147 LRESULT result;
149 engine_, hwnd, message, wparam, lparam, &result)) {
150 return result;
151 }
152 return std::nullopt;
153}
const char * message
bool FlutterDesktopEngineProcessExternalWindowMessage(FlutterDesktopEngineRef engine, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, LRESULT *result)
LONG_PTR LRESULT

References FlutterDesktopEngineProcessExternalWindowMessage(), and message.

Referenced by flutter::TEST().

◆ ProcessMessages()

std::chrono::nanoseconds FlutterEngine::ProcessMessages ( )

Definition at line 82 of file flutter_engine.cc.

82 {
83 return std::chrono::nanoseconds(FlutterDesktopEngineProcessMessages(engine_));
84}
uint64_t FlutterDesktopEngineProcessMessages(FlutterDesktopEngineRef engine)

References FlutterDesktopEngineProcessMessages().

Referenced by flutter::TEST().

◆ ReloadPlatformBrightness()

void flutter::FlutterEngine::ReloadPlatformBrightness ( )

◆ ReloadSystemFonts()

void FlutterEngine::ReloadSystemFonts ( )

Definition at line 86 of file flutter_engine.cc.

86 {
88}
void FlutterDesktopEngineReloadSystemFonts(FlutterDesktopEngineRef engine)

References FlutterDesktopEngineReloadSystemFonts().

Referenced by flutter::TEST().

◆ Run() [1/2]

bool FlutterEngine::Run ( )

Definition at line 54 of file flutter_engine.cc.

54 {
55 return Run(nullptr);
56}

References Run().

Referenced by Run(), flutter::TEST(), flutter::TEST(), and flutter::TEST().

◆ Run() [2/2]

bool FlutterEngine::Run ( const char *  entry_point)

Definition at line 58 of file flutter_engine.cc.

58 {
59 if (!engine_) {
60 std::cerr << "Cannot run an engine that failed creation." << std::endl;
61 return false;
62 }
63 if (run_succeeded_) {
64 std::cerr << "Cannot run an engine more than once." << std::endl;
65 return false;
66 }
67 bool run_succeeded = FlutterDesktopEngineRun(engine_, entry_point);
68 if (!run_succeeded) {
69 std::cerr << "Failed to start engine." << std::endl;
70 }
71 run_succeeded_ = true;
72 return run_succeeded;
73}
bool FlutterDesktopEngineRun(FlutterDesktopEngineRef engine, const char *entry_point)

References FlutterDesktopEngineRun().

◆ RunEventLoopWithTimeout()

void FlutterEngine::RunEventLoopWithTimeout ( std::chrono::milliseconds  timeout = std::chrono::milliseconds::max())

Definition at line 64 of file flutter_engine.cc.

64 {
65 if (!engine_) {
66 std::cerr << "Cannot run event loop without a running engine; call "
67 "Run first."
68 << std::endl;
69 return;
70 }
71 uint32_t timeout_milliseconds;
72 if (timeout == std::chrono::milliseconds::max()) {
73 // The C API uses 0 to represent no timeout, so convert |max| to 0.
74 timeout_milliseconds = 0;
75 } else if (timeout.count() > UINT32_MAX) {
76 timeout_milliseconds = UINT32_MAX;
77 } else {
78 timeout_milliseconds = static_cast<uint32_t>(timeout.count());
79 }
81 timeout_milliseconds);
82}
#define UINT32_MAX
Definition comments.cc:87
void FlutterDesktopRunEngineEventLoopWithTimeout(FlutterDesktopEngineRef engine, uint32_t timeout_milliseconds)

References FlutterDesktopRunEngineEventLoopWithTimeout(), and UINT32_MAX.

Referenced by flutter::TEST().

◆ SetNextFrameCallback()

void FlutterEngine::SetNextFrameCallback ( std::function< void()>  callback)

Definition at line 101 of file flutter_engine.cc.

101 {
102 next_frame_callback_ = std::move(callback);
104 engine_,
105 [](void* user_data) {
106 FlutterEngine* self = static_cast<FlutterEngine*>(user_data);
107 self->next_frame_callback_();
108 self->next_frame_callback_ = nullptr;
109 },
110 this);
111}
void FlutterDesktopEngineSetNextFrameCallback(FlutterDesktopEngineRef engine, VoidCallback callback, void *user_data)

References callback, FlutterDesktopEngineSetNextFrameCallback(), self, and user_data.

Referenced by flutter::TEST().

◆ ShutDown() [1/2]

void FlutterEngine::ShutDown ( )

Definition at line 49 of file flutter_engine.cc.

49 {
50 engine_ = nullptr;
51}

Referenced by flutter::TEST().

◆ ShutDown() [2/2]

void flutter::FlutterEngine::ShutDown ( )

◆ Start()

bool FlutterEngine::Start ( const std::string &  icu_data_path,
const std::string &  assets_path,
const std::vector< std::string > &  arguments,
const std::string &  aot_library_path = "" 
)

Definition at line 16 of file flutter_engine.cc.

19 {
20 if (engine_) {
21 std::cerr << "Cannot run an already running engine. Create a new instance "
22 "or call ShutDown first."
23 << std::endl;
24 return false;
25 }
26
27 FlutterDesktopEngineProperties c_engine_properties = {};
28 c_engine_properties.assets_path = assets_path.c_str();
29 c_engine_properties.icu_data_path = icu_data_path.c_str();
30 c_engine_properties.aot_library_path = aot_library_path.c_str();
31 std::vector<const char*> engine_switches;
32 std::transform(
33 arguments.begin(), arguments.end(), std::back_inserter(engine_switches),
34 [](const std::string& arg) -> const char* { return arg.c_str(); });
35 if (!engine_switches.empty()) {
36 c_engine_properties.switches = &engine_switches[0];
37 c_engine_properties.switches_count = engine_switches.size();
38 }
39
40 engine_ = UniqueEnginePtr(FlutterDesktopRunEngine(c_engine_properties),
42 if (!engine_) {
43 std::cerr << "Failed to start engine." << std::endl;
44 return false;
45 }
46 return true;
47}
bool FlutterDesktopShutDownEngine(FlutterDesktopEngineRef engine_ref)
FlutterDesktopEngineRef FlutterDesktopRunEngine(const FlutterDesktopEngineProperties &properties)

References FlutterDesktopEngineProperties::aot_library_path, FlutterDesktopEngineProperties::assets_path, FlutterDesktopRunEngine(), FlutterDesktopShutDownEngine(), FlutterDesktopEngineProperties::icu_data_path, FlutterDesktopEngineProperties::switches, and FlutterDesktopEngineProperties::switches_count.

Referenced by operator=(), flutter::TEST(), flutter::TEST(), and flutter::TEST().

Friends And Related Symbol Documentation

◆ FlutterViewController

friend class FlutterViewController
friend

Definition at line 116 of file flutter_engine.h.


The documentation for this class was generated from the following files: