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:
parent
c044295ab4
commit
2ba941e6bc
@ -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_`.
|
||||
|
||||
@ -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).
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user