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 |