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)
 
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
29 const std::vector<std::string>& entrypoint_args =
30 project.dart_entrypoint_arguments();
31 std::vector<const char*> entrypoint_argv;
32 std::transform(
33 entrypoint_args.begin(), entrypoint_args.end(),
34 std::back_inserter(entrypoint_argv),
35 [](const std::string& arg) -> const char* { return arg.c_str(); });
36
37 c_engine_properties.dart_entrypoint_argc =
38 static_cast<int>(entrypoint_argv.size());
39 c_engine_properties.dart_entrypoint_argv =
40 entrypoint_argv.empty() ? nullptr : entrypoint_argv.data();
41
42 engine_ = FlutterDesktopEngineCreate(&c_engine_properties);
43
44 auto core_messenger = FlutterDesktopEngineGetMessenger(engine_);
45 messenger_ = std::make_unique<BinaryMessengerImpl>(core_messenger);
46}
FlutterDesktopUIThreadPolicy
FlutterDesktopGpuPreference
FlutterDesktopAccessibilityMode
FlutterDesktopAccessibilityMode accessibility_mode
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::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 101 of file flutter_engine.h.

101 {
102 return FlutterDesktopEngineGetGraphicsAdapter(engine_, adapter_out);
103 }
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

◆ 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

◆ ProcessExternalWindowMessage()

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

Definition at line 111 of file flutter_engine.cc.

115 {
116 LRESULT result;
118 engine_, hwnd, message, wparam, lparam, &result)) {
119 return result;
120 }
121 return std::nullopt;
122}
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 80 of file flutter_engine.cc.

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

References FlutterDesktopEngineProcessMessages().

Referenced by flutter::TEST().

◆ ReloadPlatformBrightness()

void flutter::FlutterEngine::ReloadPlatformBrightness ( )

◆ ReloadSystemFonts()

void FlutterEngine::ReloadSystemFonts ( )

Definition at line 84 of file flutter_engine.cc.

84 {
86}
void FlutterDesktopEngineReloadSystemFonts(FlutterDesktopEngineRef engine)

References FlutterDesktopEngineReloadSystemFonts().

Referenced by flutter::TEST().

◆ Run() [1/2]

bool FlutterEngine::Run ( )

Definition at line 52 of file flutter_engine.cc.

52 {
53 return Run(nullptr);
54}

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 56 of file flutter_engine.cc.

56 {
57 if (!engine_) {
58 std::cerr << "Cannot run an engine that failed creation." << std::endl;
59 return false;
60 }
61 if (run_succeeded_) {
62 std::cerr << "Cannot run an engine more than once." << std::endl;
63 return false;
64 }
65 bool run_succeeded = FlutterDesktopEngineRun(engine_, entry_point);
66 if (!run_succeeded) {
67 std::cerr << "Failed to start engine." << std::endl;
68 }
69 run_succeeded_ = true;
70 return run_succeeded;
71}
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 99 of file flutter_engine.cc.

99 {
100 next_frame_callback_ = std::move(callback);
102 engine_,
103 [](void* user_data) {
104 FlutterEngine* self = static_cast<FlutterEngine*>(user_data);
105 self->next_frame_callback_();
106 self->next_frame_callback_ = nullptr;
107 },
108 this);
109}
FlutterDesktopBinaryReply callback
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 107 of file flutter_engine.h.


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