Chromium Code Reviews| Index: runtime/observatory/lib/src/elements/debugger.dart |
| diff --git a/runtime/observatory/lib/src/elements/debugger.dart b/runtime/observatory/lib/src/elements/debugger.dart |
| index 2fc89dac77b1d6d5fd4c2cd6224696cc08fa890a..ef5e25bdc8531bd143ed7db230aa2e1dd9a6d950 100644 |
| --- a/runtime/observatory/lib/src/elements/debugger.dart |
| +++ b/runtime/observatory/lib/src/elements/debugger.dart |
| @@ -7,7 +7,6 @@ library debugger_page_element; |
| import 'dart:async'; |
| import 'dart:html'; |
| import 'observatory_element.dart'; |
| -import 'package:observatory/app.dart'; |
| import 'package:observatory/cli.dart'; |
| import 'package:observatory/debugger.dart'; |
| import 'package:observatory/service.dart'; |
| @@ -920,10 +919,8 @@ class ObservatoryDebugger extends Debugger { |
| pending.add(lib.load()); |
| } |
| } |
| + |
| Future.wait(pending).then((_) { |
| - if (_subscription == null) { |
| - _subscription = vm.events.stream.listen(_onEvent); |
| - } |
| _refreshStack(isolate.pauseEvent).then((_) { |
| reportStatus(); |
| }); |
| @@ -948,7 +945,6 @@ class ObservatoryDebugger extends Debugger { |
| } |
| Isolate get isolate => _isolate; |
| Isolate _isolate; |
| - var _subscription; |
| void init() { |
| console.newline(); |
| @@ -1080,7 +1076,7 @@ class ObservatoryDebugger extends Debugger { |
| }); |
| } |
| - void _onEvent(ServiceEvent event) { |
| + void onEvent(ServiceEvent event) { |
| switch(event.kind) { |
| case ServiceEvent.kIsolateStart: |
| { |
| @@ -1226,7 +1222,6 @@ class ObservatoryDebugger extends Debugger { |
| @CustomTag('debugger-page') |
| class DebuggerPageElement extends ObservatoryElement { |
| - @published ObservatoryApplication app; |
| @published Isolate isolate; |
| isolateChanged(oldValue) { |
| @@ -1240,6 +1235,9 @@ class DebuggerPageElement extends ObservatoryElement { |
| debugger.page = this; |
| } |
| + Future<StreamSubscription> _isolateSubscriptionFuture; |
| + Future<StreamSubscription> _debugSubscriptionFuture; |
| + |
| @override |
| void attached() { |
| super.attached(); |
| @@ -1267,6 +1265,22 @@ class DebuggerPageElement extends ObservatoryElement { |
| debugger.input = $['commandline']; |
| debugger.input.debugger = debugger; |
| debugger.init(); |
| + |
| + _isolateSubscriptionFuture = |
| + app.vm.getIsolateEventStream().then((stream) { |
| + return stream.listen(debugger.onEvent); |
| + }); |
| + _debugSubscriptionFuture = |
| + app.vm.getDebugEventStream().then((stream) { |
| + return stream.listen(debugger.onEvent); |
| + }); |
| + } |
| + |
| + @override |
| + void detached() { |
| + _isolateSubscriptionFuture.then((subscription) => subscription.cancel()); |
|
Cutch
2015/07/07 23:16:09
Bracket with `if (_isolateSubscriptionFuture != nu
turnidge
2015/07/08 20:23:39
Done.
|
| + _debugSubscriptionFuture.then((subscription) => subscription.cancel()); |
| + super.detached(); |
| } |
| } |