From 2cf50ce574e71275d76acf37f6879ca457ecd0ce Mon Sep 17 00:00:00 2001 From: John McCutchan Date: Tue, 18 Apr 2017 13:27:53 -0700 Subject: [PATCH] Fix hot restart when application is being debugged (#9450) - [x] Resume the isolate before performing a hot restart. Fixes #8923 --- packages/flutter_tools/lib/src/run_hot.dart | 12 ++++++++++++ packages/flutter_tools/lib/src/vmservice.dart | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/packages/flutter_tools/lib/src/run_hot.dart b/packages/flutter_tools/lib/src/run_hot.dart index fd353d25579..fc79f4fc41b 100644 --- a/packages/flutter_tools/lib/src/run_hot.dart +++ b/packages/flutter_tools/lib/src/run_hot.dart @@ -329,6 +329,18 @@ class HotRunner extends ResidentRunner { final bool updatedDevFS = await _updateDevFS(); if (!updatedDevFS) return new OperationResult(1, 'DevFS Synchronization Failed'); + // Check if the isolate is paused and resume it. + if (currentView?.uiIsolate != null) { + // Reload the isolate. + await currentView.uiIsolate.reload(); + final ServiceEvent pauseEvent = currentView.uiIsolate.pauseEvent; + if ((pauseEvent != null) && pauseEvent.isPauseEvent) { + // Resume the isolate so that it can be killed by the embedder. + await currentView.uiIsolate.resume(); + } + } + // We are now running from source. + _runningFromSnapshot = false; await _launchFromDevFS(package, mainPath); restartTimer.stop(); printTrace('Restart performed in ' diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 9bf6c05ada2..58d3aa7b536 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -941,6 +941,12 @@ class Isolate extends ServiceObjectOwner { } } + /// Resumes the isolate. + Future> resume() { + return invokeRpcRaw('resume'); + } + + // Flutter extension methods. // Invoke a flutter extension method, if the flutter extension is not