Reland "ConnectionContext: remove media engine without blocking."

This reverts commit 2d71807fe09aad67efcd660fe286044ff10982ba.

Reason for revert: With the new AsyncAudioProcessing API, the issue that was introduced can now be worked around.

Original change's description:
> Revert "ConnectionContext: remove media engine without blocking."
>
> This reverts commit 2ba941e6bc1d20acb9cfda4b87ba53c80640bbcb.
>
> Reason for revert: Temporarily reverting due to b/269628432.
>
> Original change's description:
> > 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}
>
> Bug: webrtc:14449
> Change-Id: If2f23662e486a1c1f85c318fc98c441aab9ace31
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/295862
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Auto-Submit: Markus Handell <handellm@webrtc.org>
> Commit-Queue: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#39454}

Bug: webrtc:14449
Change-Id: I43bb7a3b366eb60b3dc4b88dd9d47d570bb99bc2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/311941
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Commit-Queue: Peter Hanspers <peterhanspers@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40705}
This commit is contained in:
Peter Hanspers 2023-09-05 17:55:34 +02:00 committed by WebRTC LUCI CQ
parent 6babacc03e
commit 3e1e831ae3
2 changed files with 5 additions and 10 deletions

View File

@ -174,15 +174,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

@ -125,7 +125,9 @@ 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_;
// This object is const over the lifetime of the ConnectionContext, and is
// only altered in the destructor.
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).