Flutter Engine
 
Loading...
Searching...
No Matches
dart_ui.cc File Reference
#include "flutter/lib/ui/dart_ui.h"
#include <mutex>
#include <string_view>
#include "flutter/common/constants.h"
#include "flutter/common/settings.h"
#include "flutter/fml/build_config.h"
#include "flutter/lib/ui/compositing/scene.h"
#include "flutter/lib/ui/compositing/scene_builder.h"
#include "flutter/lib/ui/dart_runtime_hooks.h"
#include "flutter/lib/ui/isolate_name_server/isolate_name_server_natives.h"
#include "flutter/lib/ui/painting/canvas.h"
#include "flutter/lib/ui/painting/codec.h"
#include "flutter/lib/ui/painting/color_filter.h"
#include "flutter/lib/ui/painting/engine_layer.h"
#include "flutter/lib/ui/painting/fragment_program.h"
#include "flutter/lib/ui/painting/fragment_shader.h"
#include "flutter/lib/ui/painting/gradient.h"
#include "flutter/lib/ui/painting/image.h"
#include "flutter/lib/ui/painting/image_descriptor.h"
#include "flutter/lib/ui/painting/image_filter.h"
#include "flutter/lib/ui/painting/image_shader.h"
#include "flutter/lib/ui/painting/immutable_buffer.h"
#include "flutter/lib/ui/painting/path.h"
#include "flutter/lib/ui/painting/path_measure.h"
#include "flutter/lib/ui/painting/picture.h"
#include "flutter/lib/ui/painting/picture_recorder.h"
#include "flutter/lib/ui/painting/vertices.h"
#include "flutter/lib/ui/semantics/semantics_flags.h"
#include "flutter/lib/ui/semantics/semantics_update.h"
#include "flutter/lib/ui/semantics/semantics_update_builder.h"
#include "flutter/lib/ui/semantics/string_attribute.h"
#include "flutter/lib/ui/text/font_collection.h"
#include "flutter/lib/ui/text/paragraph.h"
#include "flutter/lib/ui/text/paragraph_builder.h"
#include "flutter/lib/ui/window/platform_configuration.h"
#include "flutter/lib/ui/window/platform_isolate.h"
#include "third_party/tonic/converter/dart_converter.h"
#include "third_party/tonic/dart_args.h"
#include "third_party/tonic/logging/dart_error.h"

Go to the source code of this file.

Namespaces

namespace  flutter
 

Macros

#define FFI_FUNCTION_LIST(V)
 
#define FFI_METHOD_LIST(V)
 
#define FFI_FUNCTION_INSERT(FUNCTION)
 
#define FFI_METHOD_INSERT(CLASS, METHOD)
 

Typedefs

typedef CanvasImage flutter::Image
 
typedef CanvasPathMeasure flutter::PathMeasure
 
typedef CanvasGradient flutter::Gradient
 
typedef CanvasPath flutter::Path
 

Macro Definition Documentation

◆ FFI_FUNCTION_INSERT

#define FFI_FUNCTION_INSERT (   FUNCTION)
Value:
g_function_dispatchers.insert(std::make_pair( \
std::string_view(#FUNCTION), \
reinterpret_cast<void*>( \
tonic::FfiDispatcher<void, decltype(&FUNCTION), &FUNCTION>::Call)));

Definition at line 320 of file dart_ui.cc.

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

◆ FFI_FUNCTION_LIST

#define FFI_FUNCTION_LIST (   V)

Definition at line 69 of file dart_ui.cc.

◆ FFI_METHOD_INSERT

#define FFI_METHOD_INSERT (   CLASS,
  METHOD 
)
Value:
g_function_dispatchers.insert( \
std::make_pair(std::string_view(#CLASS "::" #METHOD), \
reinterpret_cast<void*>( \
tonic::FfiDispatcher<CLASS, decltype(&CLASS::METHOD), \
&CLASS::METHOD>::Call)));

Definition at line 326 of file dart_ui.cc.

◆ FFI_METHOD_LIST

#define FFI_METHOD_LIST (   V)

Definition at line 144 of file dart_ui.cc.