From 89cb5d268d2fc939f180dcee29df7a729fd051ef Mon Sep 17 00:00:00 2001 From: Alexander Aprelev Date: Thu, 17 May 2018 11:37:36 -0700 Subject: [PATCH] Provide isolate id for rpc request to ensure they are run on correct (UI) thread. (#17616) --- packages/flutter_tools/lib/src/vmservice.dart | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 33f1d31aa85..642c174af77 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -905,7 +905,11 @@ class VM extends ServiceObjectOwner { if (!isFlutterEngine) return; _viewCache.clear(); - await vmService.vm.invokeRpc('_flutter.listViews', timeout: kLongRequestTimeout); + for (Isolate isolate in isolates) { + await vmService.vm.invokeRpc('_flutter.listViews', + timeout: kLongRequestTimeout, + params: {'isolateId': isolate.id}); + } } Iterable get views => _viewCache.values; @@ -1393,6 +1397,7 @@ class FlutterView extends ServiceObject { assert(assetsDirectory != null); await owner.vmService.vm.invokeRpc('_flutter.setAssetBundlePath', params: { + 'isolateId': _uiIsolate.id, 'viewId': id, 'assetDirectory': assetsDirectory.toFilePath(windows: false) }); @@ -1401,7 +1406,8 @@ class FlutterView extends ServiceObject { bool get hasIsolate => _uiIsolate != null; Future flushUIThreadTasks() async { - await owner.vm.invokeRpcRaw('_flutter.flushUIThreadTasks'); + await owner.vm.invokeRpcRaw('_flutter.flushUIThreadTasks', + params: {'isolateId': _uiIsolate.id}); } @override