ConnectionContext: remove media engine without blocking.

Bug: webrtc:14449
Change-Id: I445114c14f4d440a5a8cac003266047fe4588dab
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/288580
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38928}
This commit is contained in:
Markus Handell 2022-12-20 11:04:37 +01:00 committed by WebRTC LUCI CQ
parent c044295ab4
commit 2ba941e6bc
2 changed files with 3 additions and 10 deletions

View File

@ -173,15 +173,8 @@ ConnectionContext::ConnectionContext(
ConnectionContext::~ConnectionContext() {
RTC_DCHECK_RUN_ON(signaling_thread_);
worker_thread_->BlockingCall([&] {
RTC_DCHECK_RUN_ON(worker_thread());
// While `media_engine_` is const throughout the ConnectionContext's
// lifetime, it requires destruction to happen on the worker thread. Instead
// of marking the pointer as non-const, we live with this const_cast<> in
// the destructor.
const_cast<std::unique_ptr<cricket::MediaEngineInterface>&>(media_engine_)
.reset();
});
// `media_engine_` requires destruction to happen on the worker thread.
worker_thread_->PostTask([media_engine = std::move(media_engine_)] {});
// Make sure `worker_thread()` and `signaling_thread()` outlive
// `default_socket_factory_` and `default_network_manager_`.

View File

@ -122,7 +122,7 @@ class ConnectionContext final
// Accessed both on signaling thread and worker thread.
std::unique_ptr<FieldTrialsView> const trials_;
const std::unique_ptr<cricket::MediaEngineInterface> media_engine_;
std::unique_ptr<cricket::MediaEngineInterface> media_engine_;
// This object should be used to generate any SSRC that is not explicitly
// specified by the user (or by the remote party).