1
如何从另一个线程调用Flutter Engine方法
我正在为Linux使用Flutter Desktop。我正在调用一个方法MarkTextureFrameAvailable,应该标记要由引擎重新渲染的纹理。由于我正在为视频播放器编程,因此需要MarkTextureFrameAvailable从播放器的线程中进行调用。问题是引擎迫使我MarkTextureFrameAvailable从创建引擎的线程中调用(以及其他任何引擎方法)。 您可以看到所有对引擎的调用最终都在外壳程序中,该外壳程序始终进行检查以查看这些调用是否由创建该调用的同一线程进行: task_runners_.GetPlatformTaskRunner()->RunsTasksOnCurrentThread() ( https://github.com/flutter/engine/blob/master/shell/common/shell.cc#L838) 这就是我创建颤振引擎的方式: int main(int argc, char **argv) { //.. flutter::FlutterWindowController flutter_controller(icu_data_path); // Start the engine. if (!flutter_controller.CreateWindow(800, 600, "Flutter WebRTC Demo", assets_path, arguments)) { return EXIT_FAILURE; } // Register any native plugins. FlutterWebRTCPluginRegisterWithRegistrar( flutter_controller.GetRegistrarForPlugin("FlutterWebRTCPlugin")); // Run until the window is closed. flutter_controller.RunEventLoop(); return EXIT_SUCCESS; } …