blob: 15bf88ed9370beb4169c7e3661ccc348bd83a128 [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of $LIBRARY;
$(ANNOTATIONS)class $CLASSNAME$EXTENDS$NATIVESPEC {
Stream<AudioProcessingEvent> _eventStream;
/**
* Get a Stream that fires events when AudioProcessingEvents occur.
* This particular stream is special in that it only allows one listener to a
* given stream. Converting the returned Stream [asBroadcast] will likely ruin
* the soft-real-time properties which which these events are fired and can
* be processed.
*/
Stream<AudioProcessingEvent> get onAudioProcess {
if (_eventStream == null) {
var controller = new StreamController();
var callback = (audioData) {
if (controller.hasSubscribers) {
// This stream is a strange combination of broadcast and single
// subscriber streams. We only allow one listener, but if there is
// no listener, we don't queue up events, we just drop them on the
// floor.
controller.add(audioData);
}
};
_setEventListener(callback);
_eventStream = controller.stream;
}
return _eventStream;
}
$if DART2JS
_setEventListener(callback) {
JS('void', '#.onaudioprocess = #', this,
convertDartClosureToJS(callback, 1));
}
$endif
$!MEMBERS
}