@@ -40,13 +40,16 @@ static DeviceProfile GetDeviceProfile() {
4040
4141FlutterTizenEngine::FlutterTizenEngine (bool headed)
4242 : device_profile(GetDeviceProfile()) {
43+ embedder_api_.struct_size = sizeof (FlutterEngineProcTable);
44+ FlutterEngineGetProcAddresses (&embedder_api_);
45+
4346 // Run flutter task on Tizen main loop.
4447 // Tizen engine has four threads (GPU thread, UI thread, IO thread, platform
4548 // thread). UI threads need to send flutter task to platform thread.
4649 event_loop_ = std::make_unique<TizenPlatformEventLoop>(
4750 std::this_thread::get_id (), // main thread
4851 [this ](const auto * task) {
49- if (FlutterEngineRunTask (this ->flutter_engine , task) != kSuccess ) {
52+ if (embedder_api_. RunTask (this ->flutter_engine , task) != kSuccess ) {
5053 FT_LOGE (" Could not post an engine task." );
5154 }
5255 });
@@ -75,7 +78,7 @@ void FlutterTizenEngine::InitializeRenderer() {
7578 render_loop_ = std::make_unique<TizenRenderEventLoop>(
7679 std::this_thread::get_id (), // main thread
7780 [this ](const auto * task) {
78- if (FlutterEngineRunTask (this ->flutter_engine , task) != kSuccess ) {
81+ if (embedder_api_. RunTask (this ->flutter_engine , task) != kSuccess ) {
7982 FT_LOGE (" Could not post an engine task." );
8083 }
8184 },
@@ -87,9 +90,13 @@ void FlutterTizenEngine::InitializeRenderer() {
8790#endif
8891}
8992
93+ void FlutterTizenEngine::NotifyLowMemoryWarning () {
94+ embedder_api_.NotifyLowMemoryWarning (flutter_engine);
95+ }
96+
9097// Attempts to load AOT data from the given path, which must be absolute and
9198// non-empty. Logs and returns nullptr on failure.
92- UniqueAotDataPtr LoadAotData (std::string aot_data_path) {
99+ UniqueAotDataPtr FlutterTizenEngine:: LoadAotData (std::string aot_data_path) {
93100 if (aot_data_path.empty ()) {
94101 FT_LOGE (
95102 " Attempted to load AOT data, but no aot_library_path was provided." );
@@ -104,7 +111,7 @@ UniqueAotDataPtr LoadAotData(std::string aot_data_path) {
104111 source.type = kFlutterEngineAOTDataSourceTypeElfPath ;
105112 source.elf_path = aot_data_path.c_str ();
106113 FlutterEngineAOTData data = nullptr ;
107- auto result = FlutterEngineCreateAOTData (&source, &data);
114+ auto result = embedder_api_. CreateAOTData (&source, &data);
108115 if (result != kSuccess ) {
109116 FT_LOGE (" Failed to load AOT data from: %s" , aot_data_path.c_str ());
110117 return nullptr ;
@@ -180,7 +187,7 @@ bool FlutterTizenEngine::RunEngine(
180187 }
181188#endif
182189
183- if (FlutterEngineRunsAOTCompiledDartCode ()) {
190+ if (embedder_api_. RunsAOTCompiledDartCode ()) {
184191 aot_data_ = LoadAotData (engine_properties.aot_library_path );
185192 if (!aot_data_) {
186193 FT_LOGE (" Unable to start engine without AOT data." );
@@ -191,8 +198,8 @@ bool FlutterTizenEngine::RunEngine(
191198
192199 FlutterRendererConfig renderer_config = GetRendererConfig ();
193200
194- auto result = FlutterEngineRun (FLUTTER_ENGINE_VERSION, &renderer_config,
195- &args, this , &flutter_engine);
201+ auto result = embedder_api_. Run (FLUTTER_ENGINE_VERSION, &renderer_config,
202+ &args, this , &flutter_engine);
196203 if (result == kSuccess && flutter_engine != nullptr ) {
197204 FT_LOGD (" FlutterEngineRun Success!" );
198205 } else {
@@ -207,9 +214,9 @@ bool FlutterTizenEngine::RunEngine(
207214 internal_plugin_registrar_->messenger (), renderer.get ());
208215 settings_channel = std::make_unique<SettingsChannel>(
209216 internal_plugin_registrar_->messenger ());
210- localization_channel = std::make_unique<LocalizationChannel>(flutter_engine );
217+ localization_channel = std::make_unique<LocalizationChannel>(this );
211218 localization_channel->SendLocales ();
212- lifecycle_channel = std::make_unique<LifecycleChannel>(flutter_engine );
219+ lifecycle_channel = std::make_unique<LifecycleChannel>(this );
213220
214221 if (IsHeaded ()) {
215222 auto texture_registrar = std::make_unique<FlutterTextureRegistrar>();
@@ -241,7 +248,7 @@ bool FlutterTizenEngine::StopEngine() {
241248 if (plugin_registrar_destruction_callback_) {
242249 plugin_registrar_destruction_callback_ (plugin_registrar_.get ());
243250 }
244- FlutterEngineResult result = FlutterEngineShutdown (flutter_engine);
251+ FlutterEngineResult result = embedder_api_. Shutdown (flutter_engine);
245252 flutter_engine = nullptr ;
246253 return (result == kSuccess );
247254 }
@@ -257,6 +264,52 @@ void FlutterTizenEngine::SetPluginRegistrarDestructionCallback(
257264 plugin_registrar_destruction_callback_ = callback;
258265}
259266
267+ bool FlutterTizenEngine::SendPlatformMessage (
268+ const char * channel,
269+ const uint8_t * message,
270+ const size_t message_size,
271+ const FlutterDesktopBinaryReply reply,
272+ void * user_data) {
273+ FlutterPlatformMessageResponseHandle* response_handle = nullptr ;
274+ if (reply != nullptr && user_data != nullptr ) {
275+ FlutterEngineResult result =
276+ embedder_api_.PlatformMessageCreateResponseHandle (
277+ flutter_engine, reply, user_data, &response_handle);
278+ if (result != kSuccess ) {
279+ std::cout << " Failed to create response handle\n " ;
280+ return false ;
281+ }
282+ }
283+
284+ FlutterPlatformMessage platform_message = {
285+ sizeof (FlutterPlatformMessage),
286+ channel,
287+ message,
288+ message_size,
289+ response_handle,
290+ };
291+
292+ FlutterEngineResult message_result =
293+ embedder_api_.SendPlatformMessage (flutter_engine, &platform_message);
294+ if (response_handle != nullptr ) {
295+ embedder_api_.PlatformMessageReleaseResponseHandle (flutter_engine,
296+ response_handle);
297+ }
298+ return message_result == kSuccess ;
299+ }
300+
301+ void FlutterTizenEngine::SendPlatformMessageResponse (
302+ const FlutterDesktopMessageResponseHandle* handle,
303+ const uint8_t * data,
304+ size_t data_length) {
305+ embedder_api_.SendPlatformMessageResponse (flutter_engine, handle, data,
306+ data_length);
307+ }
308+
309+ void FlutterTizenEngine::SendPointerEvent (const FlutterPointerEvent& event) {
310+ embedder_api_.SendPointerEvent (flutter_engine, &event, 1 );
311+ }
312+
260313void FlutterTizenEngine::SendWindowMetrics (int32_t width,
261314 int32_t height,
262315 double pixel_ratio) {
@@ -285,7 +338,7 @@ void FlutterTizenEngine::SendWindowMetrics(int32_t width,
285338 } else {
286339 event.pixel_ratio = pixel_ratio;
287340 }
288- FlutterEngineSendWindowMetricsEvent (flutter_engine, &event);
341+ embedder_api_. SendWindowMetricsEvent (flutter_engine, &event);
289342}
290343
291344// This must be called at least once in order to initialize the value of
@@ -331,6 +384,18 @@ void FlutterTizenEngine::OnOrientationChange(int32_t degree) {
331384 SetWindowOrientation (degree);
332385}
333386
387+ void FlutterTizenEngine::OnVsync (intptr_t baton,
388+ uint64_t frame_start_time_nanos,
389+ uint64_t frame_target_time_nanos) {
390+ embedder_api_.OnVsync (flutter_engine, baton, frame_start_time_nanos,
391+ frame_target_time_nanos);
392+ }
393+
394+ void FlutterTizenEngine::UpdateLocales (const FlutterLocale** locales,
395+ size_t locales_count) {
396+ embedder_api_.UpdateLocales (flutter_engine, locales, locales_count);
397+ }
398+
334399// The Flutter Engine calls out to this function when new platform messages are
335400// available.
336401void FlutterTizenEngine::OnFlutterPlatformMessage (
0 commit comments