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 <titovartem@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Devon Loehr <dloehr@google.com>
Cr-Commit-Position: refs/heads/main@{#42886}
This commit is contained in:
Devon Loehr 2024-07-17 16:59:39 -04:00 committed by WebRTC LUCI CQ
parent 6ea1c96325
commit 058c0059c8
4 changed files with 16 additions and 13 deletions

View File

@ -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();

View File

@ -125,7 +125,7 @@ EmulatedTURNServer::EmulatedTURNServer(std::unique_ptr<rtc::Thread> 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<cricket::TurnServer>(thread_.get());
turn_server_->set_realm(kTestRealm);
@ -146,14 +146,14 @@ EmulatedTURNServer::EmulatedTURNServer(std::unique_ptr<rtc::Thread> 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);
});

View File

@ -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<void(const EmulatedIpPacket&)> 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<bool(const EmulatedIpPacket&)> filter) {
task_queue_->PostTask([=] {
task_queue_->PostTask([this, filter] {
RTC_DCHECK_RUN_ON(task_queue_);
filter_ = filter;
});

View File

@ -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;