From 82ce7e5515c86c68392dee56f2883812b869185b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Tue, 9 Feb 2021 11:24:59 +0100 Subject: [PATCH] Fix PacedSender class to use plain mutex, rather than RecursiveCriticalSection Bug: webrtc:11567 Change-Id: I51f17ddebdda2fafeb9b721d038b16e784e7bd8f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206464 Commit-Queue: Niels Moller Reviewed-by: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#33202} --- modules/pacing/paced_sender.cc | 34 +++++++++++++++++----------------- modules/pacing/paced_sender.h | 6 +++--- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc index a0e76761e7..57dbc4f248 100644 --- a/modules/pacing/paced_sender.cc +++ b/modules/pacing/paced_sender.cc @@ -58,13 +58,13 @@ PacedSender::~PacedSender() { } void PacedSender::CreateProbeCluster(DataRate bitrate, int cluster_id) { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); return pacing_controller_.CreateProbeCluster(bitrate, cluster_id); } void PacedSender::Pause() { { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.Pause(); } @@ -77,7 +77,7 @@ void PacedSender::Pause() { void PacedSender::Resume() { { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.Resume(); } @@ -90,7 +90,7 @@ void PacedSender::Resume() { void PacedSender::SetCongestionWindow(DataSize congestion_window_size) { { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.SetCongestionWindow(congestion_window_size); } MaybeWakupProcessThread(); @@ -98,7 +98,7 @@ void PacedSender::SetCongestionWindow(DataSize congestion_window_size) { void PacedSender::UpdateOutstandingData(DataSize outstanding_data) { { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.UpdateOutstandingData(outstanding_data); } MaybeWakupProcessThread(); @@ -106,7 +106,7 @@ void PacedSender::UpdateOutstandingData(DataSize outstanding_data) { void PacedSender::SetPacingRates(DataRate pacing_rate, DataRate padding_rate) { { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.SetPacingRates(pacing_rate, padding_rate); } MaybeWakupProcessThread(); @@ -117,7 +117,7 @@ void PacedSender::EnqueuePackets( { TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("webrtc"), "PacedSender::EnqueuePackets"); - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); for (auto& packet : packets) { TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("webrtc"), "PacedSender::EnqueuePackets::Loop", "sequence_number", @@ -131,42 +131,42 @@ void PacedSender::EnqueuePackets( } void PacedSender::SetAccountForAudioPackets(bool account_for_audio) { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.SetAccountForAudioPackets(account_for_audio); } void PacedSender::SetIncludeOverhead() { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.SetIncludeOverhead(); } void PacedSender::SetTransportOverhead(DataSize overhead_per_packet) { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.SetTransportOverhead(overhead_per_packet); } TimeDelta PacedSender::ExpectedQueueTime() const { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); return pacing_controller_.ExpectedQueueTime(); } DataSize PacedSender::QueueSizeData() const { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); return pacing_controller_.QueueSizeData(); } absl::optional PacedSender::FirstSentPacketTime() const { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); return pacing_controller_.FirstSentPacketTime(); } TimeDelta PacedSender::OldestPacketWaitTime() const { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); return pacing_controller_.OldestPacketWaitTime(); } int64_t PacedSender::TimeUntilNextProcess() { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); Timestamp next_send_time = pacing_controller_.NextSendTime(); TimeDelta sleep_time = @@ -178,7 +178,7 @@ int64_t PacedSender::TimeUntilNextProcess() { } void PacedSender::Process() { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.ProcessPackets(); } @@ -198,7 +198,7 @@ void PacedSender::MaybeWakupProcessThread() { void PacedSender::SetQueueTimeLimit(TimeDelta limit) { { - rtc::CritScope cs(&critsect_); + MutexLock lock(&mutex_); pacing_controller_.SetQueueTimeLimit(limit); } MaybeWakupProcessThread(); diff --git a/modules/pacing/paced_sender.h b/modules/pacing/paced_sender.h index d255efdc3b..c819f3fb79 100644 --- a/modules/pacing/paced_sender.h +++ b/modules/pacing/paced_sender.h @@ -32,7 +32,7 @@ #include "modules/rtp_rtcp/include/rtp_packet_sender.h" #include "modules/rtp_rtcp/source/rtp_packet_to_send.h" #include "modules/utility/include/process_thread.h" -#include "rtc_base/deprecated/recursive_critical_section.h" +#include "rtc_base/synchronization/mutex.h" #include "rtc_base/thread_annotations.h" namespace webrtc { @@ -157,9 +157,9 @@ class PacedSender : public Module, PacedSender* const delegate_; } module_proxy_{this}; - rtc::RecursiveCriticalSection critsect_; + mutable Mutex mutex_; const PacingController::ProcessMode process_mode_; - PacingController pacing_controller_ RTC_GUARDED_BY(critsect_); + PacingController pacing_controller_ RTC_GUARDED_BY(mutex_); Clock* const clock_; ProcessThread* const process_thread_;