Chromium Code Reviews| 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))); |
|
xhwang
2017/05/15 17:50:55
Can you add a comment why this base::Unretained(th
Max Morin
2017/05/16 07:27:34
Done.
|
| 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))); |
|
xhwang
2017/05/15 17:50:55
ditto
Max Morin
2017/05/16 07:27:34
Done.
|
| +} |
| + |
| +void MojoAudioOutputStreamProvider::OnError() { |
| + // Deletes |this|: |
| + std::move(deleter_callback_).Run(this); |
| } |
| } // namespace media |