| Index: media/audio/audio_output_controller.cc
|
| diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc
|
| index d780687d1b8415aee8f6223be8497905a80b8800..e7addfe730d66512c36d8132d7aff19d3ab7edaa 100644
|
| --- a/media/audio/audio_output_controller.cc
|
| +++ b/media/audio/audio_output_controller.cc
|
| @@ -57,7 +57,8 @@ scoped_refptr<AudioOutputController> AudioOutputController::Create(
|
| EventHandler* event_handler,
|
| const AudioParameters& params,
|
| const std::string& output_device_id,
|
| - SyncReader* sync_reader) {
|
| + SyncReader* sync_reader,
|
| + const content::mojom::AudioOutput::CreateStreamCallback& callback) {
|
| DCHECK(audio_manager);
|
| DCHECK(sync_reader);
|
|
|
| @@ -66,8 +67,9 @@ scoped_refptr<AudioOutputController> AudioOutputController::Create(
|
|
|
| scoped_refptr<AudioOutputController> controller(new AudioOutputController(
|
| audio_manager, event_handler, params, output_device_id, sync_reader));
|
| - controller->message_loop_->PostTask(FROM_HERE, base::Bind(
|
| - &AudioOutputController::DoCreate, controller, false));
|
| + controller->message_loop_->PostTask(
|
| + FROM_HERE, base::Bind(&AudioOutputController::DoCreate, controller, false,
|
| + callback));
|
| return controller;
|
| }
|
|
|
| @@ -110,7 +112,9 @@ void AudioOutputController::SwitchOutputDevice(
|
| callback);
|
| }
|
|
|
| -void AudioOutputController::DoCreate(bool is_for_device_change) {
|
| +void AudioOutputController::DoCreate(
|
| + bool is_for_device_change,
|
| + const content::mojom::AudioOutput::CreateStreamCallback& callback) {
|
| DCHECK(message_loop_->BelongsToCurrentThread());
|
| SCOPED_UMA_HISTOGRAM_TIMER("Media.AudioOutputController.CreateTime");
|
| TRACE_EVENT0("audio", "AudioOutputController::DoCreate");
|
| @@ -122,9 +126,9 @@ void AudioOutputController::DoCreate(bool is_for_device_change) {
|
| DoStopCloseAndClearStream(); // Calls RemoveOutputDeviceChangeListener().
|
| DCHECK_EQ(kEmpty, state_);
|
|
|
| - stream_ = diverting_to_stream_ ?
|
| - diverting_to_stream_ :
|
| - audio_manager_->MakeAudioOutputStreamProxy(params_, output_device_id_);
|
| + stream_ = diverting_to_stream_ ? diverting_to_stream_
|
| + : audio_manager_->MakeAudioOutputStreamProxy(
|
| + params_, output_device_id_);
|
| if (!stream_) {
|
| state_ = kError;
|
| handler_->OnError();
|
| @@ -151,7 +155,7 @@ void AudioOutputController::DoCreate(bool is_for_device_change) {
|
|
|
| // And then report we have been created if we haven't done so already.
|
| if (!is_for_device_change)
|
| - handler_->OnCreated();
|
| + handler_->OnCreated(callback);
|
| }
|
|
|
| void AudioOutputController::DoPlay() {
|
| @@ -359,7 +363,7 @@ void AudioOutputController::OnDeviceChange() {
|
| // Recreate the stream (DoCreate() will first shut down an existing stream).
|
| // Exit if we ran into an error.
|
| const State original_state = state_;
|
| - DoCreate(true);
|
| + DoCreate(true, content::mojom::AudioOutput::CreateStreamCallback());
|
| if (!stream_ || state_ == kError)
|
| return;
|
|
|
|
|