From 6b9c60b06d04bc519195fca1f621b10accfeb46b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Sun, 10 May 2020 14:29:03 +0200 Subject: [PATCH] Removes lock release in PacedSender callback. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The PacedSender currently has logic to temporarily release its internal lock while sending or asking for padding. This creates some tricky situations in the pacing controller where we need to consider if some thread can enter while we the process thread is actually processing, just temporarily busy sending. Since the pacing call stack is no longer cyclic, we can actually remove this lock-release now. Bug: webrtc:10809 Change-Id: Ic59c605252bed1f96a03406c908a30cd1012f995 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173592 Reviewed-by: Sebastian Jansson Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#31206} --- modules/pacing/paced_sender.cc | 8 +------- test/direct_transport.cc | 1 - 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc index cd298f9b0b..1d02fe95e4 100644 --- a/modules/pacing/paced_sender.cc +++ b/modules/pacing/paced_sender.cc @@ -196,17 +196,11 @@ void PacedSender::SetQueueTimeLimit(TimeDelta limit) { void PacedSender::SendRtpPacket(std::unique_ptr packet, const PacedPacketInfo& cluster_info) { - critsect_.Leave(); packet_router_->SendPacket(std::move(packet), cluster_info); - critsect_.Enter(); } std::vector> PacedSender::GeneratePadding( DataSize size) { - std::vector> padding_packets; - critsect_.Leave(); - padding_packets = packet_router_->GeneratePadding(size.bytes()); - critsect_.Enter(); - return padding_packets; + return packet_router_->GeneratePadding(size.bytes()); } } // namespace webrtc diff --git a/test/direct_transport.cc b/test/direct_transport.cc index 818480b18b..f4ae047870 100644 --- a/test/direct_transport.cc +++ b/test/direct_transport.cc @@ -55,7 +55,6 @@ DirectTransport::~DirectTransport() { } void DirectTransport::SetReceiver(PacketReceiver* receiver) { - rtc::CritScope cs(&process_lock_); fake_network_->SetReceiver(receiver); }