@@ -177,6 +177,14 @@ Dart_Handle GetVMServiceAssetsArchiveCallback() {
177177#endif
178178}
179179
180+ void PostTaskCallback (void * post_task_data,
181+ Dart_Task task,
182+ Dart_TaskData task_data) {
183+ auto * dart_vm = reinterpret_cast <DartVM*>(post_task_data);
184+ dart_vm->GetConcurrentWorkerTaskRunner ()->PostTask (
185+ [task] { Dart_RunTask (task); });
186+ }
187+
180188static const char kStdoutStreamId [] = " Stdout" ;
181189static const char kStderrStreamId [] = " Stderr" ;
182190
@@ -449,6 +457,8 @@ DartVM::DartVM(std::shared_ptr<const DartVMData> vm_data,
449457 params.thread_exit = ThreadExitCallback;
450458 params.get_service_assets = GetVMServiceAssetsArchiveCallback;
451459 params.entropy_source = dart::bin::GetEntropy;
460+ params.post_task = PostTaskCallback;
461+ params.post_task_data = this ;
452462 DartVMInitializer::Initialize (¶ms);
453463 // Send the earliest available timestamp in the application lifecycle to
454464 // timeline. The difference between this timestamp and the time we render
@@ -483,6 +493,10 @@ DartVM::DartVM(std::shared_ptr<const DartVMData> vm_data,
483493 Dart_SetDartLibrarySourcesKernel (dart_library_sources->GetMapping (),
484494 dart_library_sources->GetSize ());
485495 }
496+
497+ // Update thread names now that the Dart VM is initialized.
498+ concurrent_message_loop_->PostTaskToAllWorkers (
499+ [] { Dart_SetThreadName (" FlutterConcurrentMessageLoopWorker" ); });
486500}
487501
488502DartVM::~DartVM () {
0 commit comments