From 058c0059c80001cc891ffee94a00fa15d7edf093 Mon Sep 17 00:00:00 2001 From: Devon Loehr Date: Wed, 17 Jul 2024 16:59:39 -0400 Subject: [PATCH] Remove implicit `this` captures When declaring a lambda with a value-capture default `[=, ...]`, the this pointer is implicitly captured by value as well. This results in potentially-unintuitive behavior and has been deprecated in C++20. It produces a warning in newer versions of clang (https://reviews.llvm.org/D142639). Unfortunately, the preferred C++20 pattern `[=, this, ...]` is not compatible with previous C++ versions. To maintain compatibility with C++14, 17, and 20, this CL modifies all lambdas which capture `this` to explicitly capture all the necessary variables, with no capture-default. Bug: chromium:351004963 Change-Id: I10c4a9669f340efba75a3e4016f0988a2d606d1d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357322 Reviewed-by: Artem Titov Reviewed-by: Taylor Brandstetter Commit-Queue: Devon Loehr Cr-Commit-Position: refs/heads/main@{#42886} --- pc/jsep_transport_controller.cc | 13 ++++++++----- test/network/emulated_turn_server.cc | 6 +++--- test/network/network_emulation.cc | 8 ++++---- test/network/network_emulation_manager.cc | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/pc/jsep_transport_controller.cc b/pc/jsep_transport_controller.cc index 65334d6782..05988eccb5 100644 --- a/pc/jsep_transport_controller.cc +++ b/pc/jsep_transport_controller.cc @@ -83,8 +83,9 @@ RTCError JsepTransportController::SetLocalDescription( TRACE_EVENT0("webrtc", "JsepTransportController::SetLocalDescription"); if (!network_thread_->IsCurrent()) { - return network_thread_->BlockingCall( - [=] { return SetLocalDescription(type, local_desc, remote_desc); }); + return network_thread_->BlockingCall([this, type, local_desc, remote_desc] { + return SetLocalDescription(type, local_desc, remote_desc); + }); } RTC_DCHECK_RUN_ON(network_thread_); @@ -107,8 +108,9 @@ RTCError JsepTransportController::SetRemoteDescription( RTC_DCHECK(remote_desc); TRACE_EVENT0("webrtc", "JsepTransportController::SetRemoteDescription"); if (!network_thread_->IsCurrent()) { - return network_thread_->BlockingCall( - [=] { return SetRemoteDescription(type, local_desc, remote_desc); }); + return network_thread_->BlockingCall([this, type, local_desc, remote_desc] { + return SetRemoteDescription(type, local_desc, remote_desc); + }); } RTC_DCHECK_RUN_ON(network_thread_); @@ -402,7 +404,8 @@ void JsepTransportController::SetActiveResetSrtpParams( RTCError JsepTransportController::RollbackTransports() { if (!network_thread_->IsCurrent()) { - return network_thread_->BlockingCall([=] { return RollbackTransports(); }); + return network_thread_->BlockingCall( + [this] { return RollbackTransports(); }); } RTC_DCHECK_RUN_ON(network_thread_); bundles_.Rollback(); diff --git a/test/network/emulated_turn_server.cc b/test/network/emulated_turn_server.cc index c82e3bcaab..47d2c9cbd6 100644 --- a/test/network/emulated_turn_server.cc +++ b/test/network/emulated_turn_server.cc @@ -125,7 +125,7 @@ EmulatedTURNServer::EmulatedTURNServer(std::unique_ptr thread, : thread_(std::move(thread)), client_(client), peer_(peer) { ice_config_.username = "keso"; ice_config_.password = "keso"; - SendTask(thread_.get(), [=]() { + SendTask(thread_.get(), [this]() { RTC_DCHECK_RUN_ON(thread_.get()); turn_server_ = std::make_unique(thread_.get()); turn_server_->set_realm(kTestRealm); @@ -146,14 +146,14 @@ EmulatedTURNServer::EmulatedTURNServer(std::unique_ptr thread, } void EmulatedTURNServer::Stop() { - SendTask(thread_.get(), [=]() { + SendTask(thread_.get(), [this]() { RTC_DCHECK_RUN_ON(thread_.get()); sockets_.clear(); }); } EmulatedTURNServer::~EmulatedTURNServer() { - SendTask(thread_.get(), [=]() { + SendTask(thread_.get(), [this]() { RTC_DCHECK_RUN_ON(thread_.get()); turn_server_.reset(nullptr); }); diff --git a/test/network/network_emulation.cc b/test/network/network_emulation.cc index 1be73f0ae0..28c763763d 100644 --- a/test/network/network_emulation.cc +++ b/test/network/network_emulation.cc @@ -474,7 +474,7 @@ void NetworkRouterNode::OnPacketReceived(EmulatedIpPacket packet) { void NetworkRouterNode::SetReceiver( const rtc::IPAddress& dest_ip, EmulatedNetworkReceiverInterface* receiver) { - task_queue_->PostTask([=] { + task_queue_->PostTask([this, dest_ip, receiver] { RTC_DCHECK_RUN_ON(task_queue_); EmulatedNetworkReceiverInterface* cur_receiver = routing_[dest_ip]; RTC_CHECK(cur_receiver == nullptr || cur_receiver == receiver) @@ -490,7 +490,7 @@ void NetworkRouterNode::RemoveReceiver(const rtc::IPAddress& dest_ip) { void NetworkRouterNode::SetDefaultReceiver( EmulatedNetworkReceiverInterface* receiver) { - task_queue_->PostTask([=] { + task_queue_->PostTask([this, receiver] { RTC_DCHECK_RUN_ON(task_queue_); if (default_receiver_.has_value()) { RTC_CHECK_EQ(*default_receiver_, receiver) @@ -507,7 +507,7 @@ void NetworkRouterNode::RemoveDefaultReceiver() { void NetworkRouterNode::SetWatcher( std::function watcher) { - task_queue_->PostTask([=] { + task_queue_->PostTask([this, watcher] { RTC_DCHECK_RUN_ON(task_queue_); watcher_ = watcher; }); @@ -515,7 +515,7 @@ void NetworkRouterNode::SetWatcher( void NetworkRouterNode::SetFilter( std::function filter) { - task_queue_->PostTask([=] { + task_queue_->PostTask([this, filter] { RTC_DCHECK_RUN_ON(task_queue_); filter_ = filter; }); diff --git a/test/network/network_emulation_manager.cc b/test/network/network_emulation_manager.cc index dc4bf72c32..6a583a3f08 100644 --- a/test/network/network_emulation_manager.cc +++ b/test/network/network_emulation_manager.cc @@ -272,7 +272,7 @@ CrossTrafficGenerator* NetworkEmulationManagerImpl::StartCrossTraffic( void NetworkEmulationManagerImpl::StopCrossTraffic( CrossTrafficGenerator* generator) { - task_queue_.PostTask([=]() { + task_queue_.PostTask([this, generator]() { auto it = std::find_if(cross_traffics_.begin(), cross_traffics_.end(), [=](const CrossTrafficSource& el) { return el.first.get() == generator;