| Index: sdk/lib/mdv_observe_impl/mdv_observe_impl.dart
|
| diff --git a/sdk/lib/mdv_observe_impl/mdv_observe_impl.dart b/sdk/lib/mdv_observe_impl/mdv_observe_impl.dart
|
| index e56554bce82d3cbac789836e9b70d9b126b372f3..ed42d62ef2453b0aa663e286f361c9ea0e1546f1 100644
|
| --- a/sdk/lib/mdv_observe_impl/mdv_observe_impl.dart
|
| +++ b/sdk/lib/mdv_observe_impl/mdv_observe_impl.dart
|
| @@ -63,16 +63,15 @@ typedef ObservableBase = Object with ObservableMixin;
|
| * call [notifyPropertyChange]. See that method for an example.
|
| */
|
| abstract class ObservableMixin implements Observable {
|
| - StreamController<List<ChangeRecord>> _observers;
|
| - Stream<List<ChangeRecord>> _stream;
|
| + StreamController _multiplexController;
|
| List<ChangeRecord> _changes;
|
|
|
| Stream<List<ChangeRecord>> get changes {
|
| - if (_observers == null) {
|
| - _observers = new StreamController<List<ChangeRecord>>();
|
| - _stream = _observers.stream.asBroadcastStream();
|
| + if (_multiplexController == null) {
|
| + _multiplexController =
|
| + new StreamController<List<ChangeRecord>>.multiplex();
|
| }
|
| - return _stream;
|
| + return _multiplexController.stream;
|
| }
|
|
|
| void _deliverChanges() {
|
| @@ -80,7 +79,7 @@ abstract class ObservableMixin implements Observable {
|
| _changes = null;
|
| if (hasObservers && changes != null) {
|
| // TODO(jmesserly): make "changes" immutable
|
| - _observers.add(changes);
|
| + _multiplexController.add(changes);
|
| }
|
| }
|
|
|
| @@ -88,7 +87,8 @@ abstract class ObservableMixin implements Observable {
|
| * True if this object has any observers, and should call
|
| * [notifyPropertyChange] for changes.
|
| */
|
| - bool get hasObservers => _observers != null && _observers.hasListener;
|
| + bool get hasObservers => _multiplexController != null &&
|
| + _multiplexController.hasListener;
|
|
|
| /**
|
| * Notify that the field [name] of this object has been changed.
|
|
|