333 {
334
335std::once_flag g_dispatchers_init_flag;
336std::unordered_map<std::string_view, void*> g_function_dispatchers;
337
338void* ResolveFfiNativeFunction(
const char*
name, uintptr_t
args) {
339 auto it = g_function_dispatchers.find(
name);
340 return (it != g_function_dispatchers.end()) ? it->second : nullptr;
341}
342
343void InitDispatcherMap() {
346}
347
348}
349
350void DartUI::InitForIsolate(const Settings& settings) {
351 std::call_once(g_dispatchers_init_flag, InitDispatcherMap);
352
353 auto dart_ui = Dart_LookupLibrary(
ToDart(
"dart:ui"));
354 if (Dart_IsError(dart_ui)) {
355 Dart_PropagateError(dart_ui);
356 }
357
358
359 Dart_Handle result =
360 Dart_SetFfiNativeResolver(dart_ui, ResolveFfiNativeFunction);
361 if (Dart_IsError(result)) {
362 Dart_PropagateError(result);
363 }
364
365 if (settings.enable_impeller) {
366 result = Dart_SetField(dart_ui,
ToDart(
"_impellerEnabled"), Dart_True());
367 if (Dart_IsError(result)) {
368 Dart_PropagateError(result);
369 }
370 }
371
372 if (settings.enable_platform_isolates) {
373 result =
374 Dart_SetField(dart_ui,
ToDart(
"_platformIsolatesEnabled"), Dart_True());
375 if (Dart_IsError(result)) {
376 Dart_PropagateError(result);
377 }
378 }
379
380 result = Dart_SetField(dart_ui,
ToDart(
"_implicitViewId"),
381 Dart_NewInteger(kFlutterImplicitViewId));
382 if (Dart_IsError(result)) {
383 Dart_PropagateError(result);
384 }
385}
386
387}
#define FFI_FUNCTION_LIST(V)
#define FFI_FUNCTION_INSERT(FUNCTION)
#define FFI_METHOD_LIST(V)
#define FFI_METHOD_INSERT(CLASS, METHOD)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
Dart_Handle ToDart(const T &object)