| Index: media/mojo/services/mojo_audio_output_stream_provider.cc
|
| diff --git a/media/mojo/services/mojo_audio_output_stream_provider.cc b/media/mojo/services/mojo_audio_output_stream_provider.cc
|
| index 10f8c89d4d7d797bd5bca401d07f92c73d396112..d27f4187175bfc5faedd286e534225de0cd3d124 100644
|
| --- a/media/mojo/services/mojo_audio_output_stream_provider.cc
|
| +++ b/media/mojo/services/mojo_audio_output_stream_provider.cc
|
| @@ -14,9 +14,10 @@ MojoAudioOutputStreamProvider::MojoAudioOutputStreamProvider(
|
| DeleterCallback deleter_callback)
|
| : binding_(this, std::move(request)),
|
| create_delegate_callback_(std::move(create_delegate_callback)),
|
| - deleter_callback_(base::Bind(std::move(deleter_callback), this)) {
|
| + deleter_callback_(std::move(deleter_callback)) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - binding_.set_connection_error_handler(deleter_callback_);
|
| + binding_.set_connection_error_handler(base::Bind(
|
| + &MojoAudioOutputStreamProvider::OnError, base::Unretained(this)));
|
| DCHECK(create_delegate_callback_);
|
| DCHECK(deleter_callback_);
|
| }
|
| @@ -33,14 +34,21 @@ void MojoAudioOutputStreamProvider::Acquire(
|
| if (audio_output_) {
|
| LOG(ERROR) << "Output acquired twice.";
|
| binding_.Unbind();
|
| - deleter_callback_.Run(); // deletes |this|.
|
| + std::move(deleter_callback_).Run(this); // deletes |this|.
|
| return;
|
| }
|
|
|
| audio_output_.emplace(
|
| std::move(stream_request),
|
| base::BindOnce(std::move(create_delegate_callback_), params),
|
| - std::move(callback), deleter_callback_);
|
| + std::move(callback),
|
| + base::BindOnce(&MojoAudioOutputStreamProvider::OnError,
|
| + base::Unretained(this)));
|
| +}
|
| +
|
| +void MojoAudioOutputStreamProvider::OnError() {
|
| + // Deletes |this|:
|
| + std::move(deleter_callback_).Run(this);
|
| }
|
|
|
| } // namespace media
|
|
|