Flutter Engine
The Flutter Engine
Classes | Macros | Functions | Variables
FlutterEngine.mm File Reference
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h"
#include <memory>
#include "flutter/common/constants.h"
#include "flutter/fml/message_loop.h"
#include "flutter/fml/platform/darwin/platform_version.h"
#include "flutter/fml/platform/darwin/weak_nsobject.h"
#include "flutter/fml/trace_event.h"
#include "flutter/runtime/ptrace_check.h"
#include "flutter/shell/common/engine.h"
#include "flutter/shell/common/platform_view.h"
#include "flutter/shell/common/shell.h"
#include "flutter/shell/common/switches.h"
#include "flutter/shell/common/thread_host.h"
#include "flutter/shell/common/variable_refresh_rate_display.h"
#import "flutter/shell/platform/darwin/common/command_line.h"
#import "flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterDartVMServicePublisher.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterIndirectScribbleDelegate.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformPlugin.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputDelegate.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextureRegistryRelay.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterUndoManagerDelegate.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterUndoManagerPlugin.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/UIViewController+FlutterScreenAndSceneIfLoaded.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/connection_collection.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/profiler_metrics_ios.h"
#import "flutter/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h"
#import "flutter/shell/platform/darwin/ios/platform_view_ios.h"
#import "flutter/shell/platform/darwin/ios/rendering_api_selection.h"
#include "flutter/shell/profiling/sampling_profiler.h"

Go to the source code of this file.

Classes

class  FlutterEngineRegistrar
 

Macros

#define FML_USED_ON_EMBEDDER
 

Functions

static void IOSPlatformThreadConfigSetter (const fml::Thread::ThreadConfig &config)
 

Variables

NSString *const FlutterDefaultDartEntrypoint = nil
 
NSString *const FlutterDefaultInitialRoute = nil
 
NSString *const kFlutterEngineWillDealloc = @"@"FlutterEngineWillDealloc"
 
NSString *const kFlutterKeyDataChannel = @"@"flutter/keydata"
 
static constexpr int kNumProfilerSamplesPerSec = 5
 
std::shared_ptr< flutter::ThreadHost_threadHost
 
std::unique_ptr< flutter::Shell_shell
 
NSString * _labelPrefix
 
std::unique_ptr< fml::WeakNSObjectFactory< FlutterEngine > > _weakFactory
 
fml::WeakNSObject< FlutterViewController_viewController
 
fml::scoped_nsobject< FlutterDartVMServicePublisher_publisher
 
std::shared_ptr< flutter::FlutterPlatformViewsController_platformViewsController
 
flutter::IOSRenderingAPI _renderingApi
 
std::shared_ptr< flutter::ProfilerMetricsIOS_profiler_metrics
 
std::shared_ptr< flutter::SamplingProfiler_profiler
 
fml::scoped_nsobject< FlutterPlatformPlugin_platformPlugin
 
fml::scoped_nsobject< FlutterTextInputPlugin_textInputPlugin
 
fml::scoped_nsobject< FlutterUndoManagerPlugin_undoManagerPlugin
 
fml::scoped_nsobject< FlutterSpellCheckPlugin_spellCheckPlugin
 
fml::scoped_nsobject< FlutterRestorationPlugin_restorationPlugin
 
fml::scoped_nsobject< FlutterMethodChannel_localizationChannel
 
fml::scoped_nsobject< FlutterMethodChannel_navigationChannel
 
fml::scoped_nsobject< FlutterMethodChannel_restorationChannel
 
fml::scoped_nsobject< FlutterMethodChannel_platformChannel
 
fml::scoped_nsobject< FlutterMethodChannel_platformViewsChannel
 
fml::scoped_nsobject< FlutterMethodChannel_textInputChannel
 
fml::scoped_nsobject< FlutterMethodChannel_undoManagerChannel
 
fml::scoped_nsobject< FlutterMethodChannel_scribbleChannel
 
fml::scoped_nsobject< FlutterMethodChannel_spellCheckChannel
 
fml::scoped_nsobject< FlutterBasicMessageChannel_lifecycleChannel
 
fml::scoped_nsobject< FlutterBasicMessageChannel_systemChannel
 
fml::scoped_nsobject< FlutterBasicMessageChannel_settingsChannel
 
fml::scoped_nsobject< FlutterBasicMessageChannel_keyEventChannel
 
fml::scoped_nsobject< FlutterMethodChannel_screenshotChannel
 
int64_t _nextTextureId
 
BOOL _allowHeadlessExecution
 
BOOL _restorationEnabled
 
FlutterBinaryMessengerRelay_binaryMessenger
 
FlutterTextureRegistryRelay_textureRegistry
 
std::unique_ptr< flutter::ConnectionCollection_connections
 

Macro Definition Documentation

◆ FML_USED_ON_EMBEDDER

#define FML_USED_ON_EMBEDDER

Definition at line 5 of file FlutterEngine.mm.

Function Documentation

◆ IOSPlatformThreadConfigSetter()

static void IOSPlatformThreadConfigSetter ( const fml::Thread::ThreadConfig config)
static

Inheriting ThreadConfigurer and use iOS platform thread API to configure the thread priorities Using iOS platform thread API to configure thread priority

Definition at line 46 of file FlutterEngine.mm.

46 {
47 // set thread name
49
50 // set thread priority
51 switch (config.priority) {
53 pthread_set_qos_class_self_np(QOS_CLASS_BACKGROUND, 0);
54 [[NSThread currentThread] setThreadPriority:0];
55 break;
56 }
58 pthread_set_qos_class_self_np(QOS_CLASS_DEFAULT, 0);
59 [[NSThread currentThread] setThreadPriority:0.5];
60 break;
61 }
64 pthread_set_qos_class_self_np(QOS_CLASS_USER_INTERACTIVE, 0);
65 [[NSThread currentThread] setThreadPriority:1.0];
66 sched_param param;
67 int policy;
68 pthread_t thread = pthread_self();
69 if (!pthread_getschedparam(thread, &policy, &param)) {
70 param.sched_priority = 50;
71 pthread_setschedparam(thread, policy, &param);
72 }
73 break;
74 }
75 }
76}
@ kNormal
Default priority level.
@ kRaster
Suitable for thread which raster data.
@ kBackground
Suitable for threads that shouldn't disrupt high priority work.
@ kDisplay
Suitable for threads which generate data for the display.
static void SetCurrentThreadName(const ThreadConfig &config)
Definition: thread.cc:135
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network policy
Definition: switches.h:248
ThreadPriority priority
Definition: thread.h:45

Variable Documentation

◆ _allowHeadlessExecution

BOOL _allowHeadlessExecution

Definition at line 153 of file FlutterEngine.mm.

◆ _binaryMessenger

FlutterBinaryMessengerRelay* _binaryMessenger

Definition at line 155 of file FlutterEngine.mm.

◆ _connections

std::unique_ptr<flutter::ConnectionCollection> _connections

Definition at line 157 of file FlutterEngine.mm.

◆ _keyEventChannel

Definition at line 148 of file FlutterEngine.mm.

◆ _labelPrefix

NSString* _labelPrefix

Definition at line 119 of file FlutterEngine.mm.

◆ _lifecycleChannel

Definition at line 145 of file FlutterEngine.mm.

◆ _localizationChannel

Definition at line 136 of file FlutterEngine.mm.

◆ _navigationChannel

Definition at line 137 of file FlutterEngine.mm.

◆ _nextTextureId

int64_t _nextTextureId

Definition at line 151 of file FlutterEngine.mm.

◆ _platformChannel

Definition at line 139 of file FlutterEngine.mm.

◆ _platformPlugin

Definition at line 131 of file FlutterEngine.mm.

◆ _platformViewsChannel

Definition at line 140 of file FlutterEngine.mm.

◆ _platformViewsController

std::shared_ptr<flutter::FlutterPlatformViewsController> _platformViewsController

Definition at line 125 of file FlutterEngine.mm.

◆ _profiler

std::shared_ptr<flutter::SamplingProfiler> _profiler

Definition at line 128 of file FlutterEngine.mm.

◆ _profiler_metrics

std::shared_ptr<flutter::ProfilerMetricsIOS> _profiler_metrics

Definition at line 127 of file FlutterEngine.mm.

◆ _publisher

Definition at line 123 of file FlutterEngine.mm.

◆ _renderingApi

flutter::IOSRenderingAPI _renderingApi

Definition at line 126 of file FlutterEngine.mm.

◆ _restorationChannel

Definition at line 138 of file FlutterEngine.mm.

◆ _restorationEnabled

BOOL _restorationEnabled

Definition at line 154 of file FlutterEngine.mm.

◆ _restorationPlugin

Definition at line 135 of file FlutterEngine.mm.

◆ _screenshotChannel

Definition at line 149 of file FlutterEngine.mm.

◆ _scribbleChannel

Definition at line 143 of file FlutterEngine.mm.

◆ _settingsChannel

Definition at line 147 of file FlutterEngine.mm.

◆ _shell

std::unique_ptr<flutter::Shell> _shell

Definition at line 118 of file FlutterEngine.mm.

◆ _spellCheckChannel

Definition at line 144 of file FlutterEngine.mm.

◆ _spellCheckPlugin

Definition at line 134 of file FlutterEngine.mm.

◆ _systemChannel

Definition at line 146 of file FlutterEngine.mm.

◆ _textInputChannel

Definition at line 141 of file FlutterEngine.mm.

◆ _textInputPlugin

Definition at line 132 of file FlutterEngine.mm.

◆ _textureRegistry

FlutterTextureRegistryRelay* _textureRegistry

Definition at line 156 of file FlutterEngine.mm.

◆ _threadHost

std::shared_ptr<flutter::ThreadHost> _threadHost
Initial value:

Definition at line 117 of file FlutterEngine.mm.

◆ _undoManagerChannel

Definition at line 142 of file FlutterEngine.mm.

◆ _undoManagerPlugin

Definition at line 133 of file FlutterEngine.mm.

◆ _viewController

Definition at line 122 of file FlutterEngine.mm.

◆ _weakFactory

std::unique_ptr<fml::WeakNSObjectFactory<FlutterEngine> > _weakFactory

Definition at line 120 of file FlutterEngine.mm.

◆ FlutterDefaultDartEntrypoint

NSString* const FlutterDefaultDartEntrypoint = nil

The dart entrypoint that is associated with main(). This is to be used as an argument to the runWithEntrypoint* methods.

Definition at line 80 of file FlutterEngine.mm.

◆ FlutterDefaultInitialRoute

NSString* const FlutterDefaultInitialRoute = nil

The default Flutter initial route ("/").

Definition at line 81 of file FlutterEngine.mm.

◆ kFlutterEngineWillDealloc

NSString* const kFlutterEngineWillDealloc = @"@"FlutterEngineWillDealloc"

Definition at line 85 of file FlutterEngine.mm.

◆ kFlutterKeyDataChannel

NSString* const kFlutterKeyDataChannel = @"@"flutter/keydata"

Definition at line 86 of file FlutterEngine.mm.

◆ kNumProfilerSamplesPerSec

constexpr int kNumProfilerSamplesPerSec = 5
staticconstexpr

Definition at line 87 of file FlutterEngine.mm.