| Index: content/browser/renderer_host/media/audio_output_delegate.cc
|
| diff --git a/content/browser/renderer_host/media/audio_output_delegate.cc b/content/browser/renderer_host/media/audio_output_delegate.cc
|
| index 32d936eb3f69ad35c575347c5cc2584cddbdb736..eec4e48fc5c77de56c457760d94b2e38c444d072 100644
|
| --- a/content/browser/renderer_host/media/audio_output_delegate.cc
|
| +++ b/content/browser/renderer_host/media/audio_output_delegate.cc
|
| @@ -18,6 +18,7 @@ namespace content {
|
|
|
| AudioOutputDelegate::AudioOutputDelegate(
|
| EventHandler* handler,
|
| + AudioStreamRegistry* stream_registry,
|
| media::AudioManager* audio_manager,
|
| std::unique_ptr<media::AudioLog> audio_log,
|
| int stream_id,
|
| @@ -26,6 +27,7 @@ AudioOutputDelegate::AudioOutputDelegate(
|
| const media::AudioParameters& params,
|
| const std::string& output_device_id)
|
| : handler_(handler),
|
| + stream_registry_(stream_registry),
|
| audio_log_(std::move(audio_log)),
|
| reader_(AudioSyncReader::Create(params)),
|
| stream_id_(stream_id),
|
| @@ -37,6 +39,7 @@ AudioOutputDelegate::AudioOutputDelegate(
|
| DCHECK(audio_log_);
|
| weak_this_ = weak_factory_.GetWeakPtr();
|
| audio_log_->OnCreated(stream_id, params, output_device_id);
|
| + stream_registry->RegisterOutputStream(this);
|
| controller_ = media::AudioOutputController::Create(
|
| audio_manager, this, params, output_device_id, reader_.get());
|
| DCHECK(controller_);
|
| @@ -51,6 +54,7 @@ AudioOutputDelegate::~AudioOutputDelegate() {
|
| void AudioOutputDelegate::Deleter::operator()(AudioOutputDelegate* delegate) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| delegate->UpdatePlayingState(false);
|
| + delegate->stream_registry_->DeregisterOutputStream(delegate);
|
| delegate->handler_ = nullptr;
|
| delegate->audio_log_->OnClosed(delegate->stream_id_);
|
|
|
| @@ -82,6 +86,7 @@ void AudioOutputDelegate::Deleter::operator()(AudioOutputDelegate* delegate) {
|
| // static
|
| AudioOutputDelegate::UniquePtr AudioOutputDelegate::Create(
|
| EventHandler* handler,
|
| + AudioStreamRegistry* stream_registry,
|
| media::AudioManager* audio_manager,
|
| std::unique_ptr<media::AudioLog> audio_log,
|
| AudioMirroringManager* mirroring_manager,
|
| @@ -94,9 +99,9 @@ AudioOutputDelegate::UniquePtr AudioOutputDelegate::Create(
|
| if (media_observer)
|
| media_observer->OnCreatingAudioStream(render_process_id, render_frame_id);
|
| UniquePtr delegate(
|
| - new AudioOutputDelegate(handler, audio_manager, std::move(audio_log),
|
| - stream_id, render_frame_id, render_process_id,
|
| - params, output_device_id),
|
| + new AudioOutputDelegate(handler, stream_registry, audio_manager,
|
| + std::move(audio_log), stream_id, render_frame_id,
|
| + render_process_id, params, output_device_id),
|
| Deleter(mirroring_manager));
|
| if (mirroring_manager)
|
| mirroring_manager->AddDiverter(render_process_id, render_frame_id,
|
| @@ -162,7 +167,7 @@ void AudioOutputDelegate::UpdatePlayingState(bool playing) {
|
| return;
|
|
|
| playing_ = playing;
|
| - handler_->OnStreamStateChanged(playing);
|
| + stream_registry_->OutputStreamStateChanged(playing);
|
| if (playing) {
|
| // Note that this takes a reference to |controller_|, and
|
| // (Start|Stop)MonitoringStream calls are async, so we don't have a
|
|
|