diff --git a/call/BUILD.gn b/call/BUILD.gn index b4680de860..85192746c1 100644 --- a/call/BUILD.gn +++ b/call/BUILD.gn @@ -328,6 +328,7 @@ rtc_library("call") { "../rtc_base:rtc_task_queue", "../rtc_base:safe_minmax", "../rtc_base:stringutils", + "../rtc_base:threading", "../rtc_base:timeutils", "../rtc_base/experiments:field_trial_parser", "../rtc_base/network:sent_packet", diff --git a/call/degraded_call.cc b/call/degraded_call.cc index fc76c7be5c..3f47fcded0 100644 --- a/call/degraded_call.cc +++ b/call/degraded_call.cc @@ -16,7 +16,7 @@ #include "absl/strings/string_view.h" #include "api/sequence_checker.h" #include "modules/rtp_rtcp/source/rtp_util.h" -#include "rtc_base/event.h" +#include "rtc_base/thread.h" namespace webrtc { @@ -172,13 +172,10 @@ DegradedCall::~DegradedCall() { // Otherwise, when the `DegradedCall` object is destroyed but // `SetNotAlive` has not yet been called, // another Closure guarded by `call_alive_` may be called. - rtc::Event event; - call_->network_thread()->PostTask( - [flag = std::move(call_alive_), &event]() mutable { - flag->SetNotAlive(); - event.Set(); - }); - event.Wait(rtc::Event::kForever); + // TODO(https://crbug.com/webrtc/12649): Remove this block-invoke. + static_cast(call_->network_thread()) + ->BlockingCall( + [flag = std::move(call_alive_)]() mutable { flag->SetNotAlive(); }); } AudioSendStream* DegradedCall::CreateAudioSendStream(