commit 384d90feb8cc3fdcf49a274bab36210ad0ea015c
parent 416fd907ecfb59402834c57ddc831014c373859b
Author: Dan Baker <dbaker@mozilla.com>
Date: Thu, 23 Oct 2025 16:19:27 -0600
Bug 1995393 - Vendor libwebrtc from 2e56c0a702
Upstream commit: https://webrtc.googlesource.com/src/+/2e56c0a702c7da1a6e42db32c45fde44d2edfa0f
Replace erase-remove idiom with std::erase and std::erase_if (2)
Bug: webrtc:438403372
Change-Id: I4046ef37985c721d7738680c5c89efc42fda89d0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/404582
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45353}
Diffstat:
9 files changed, 70 insertions(+), 51 deletions(-)
diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor
@@ -1,4 +1,4 @@
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc
-libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-23T21:57:12.784990+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-23T22:19:14.410416+00:00.
# base of lastest vendoring
-ac2597e9ce
+2e56c0a702
diff --git a/third_party/libwebrtc/modules/desktop_capture/cropping_window_capturer_win.cc b/third_party/libwebrtc/modules/desktop_capture/cropping_window_capturer_win.cc
@@ -191,13 +191,12 @@ void CroppingWindowCapturerWin::CaptureFrame() {
return false;
// Filter out windows not visible on current desktop
- auto it = std::remove_if(
- result.begin(), result.end(), [this](const auto& source) {
+ std::erase_if(
+ result, [this](const auto& source) {
HWND hwnd = reinterpret_cast<HWND>(source.id);
return !window_capture_helper_
.IsWindowVisibleOnCurrentDesktop(hwnd);
});
- result.erase(it, result.end());
sources->swap(result);
return true;
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
@@ -1000,9 +1000,7 @@ bool SharedScreenCastStreamPrivate::ProcessDMABuffer(
<< " and trying to renegotiate stream parameters";
if (pw_server_version_ >= kDropSingleModifierMinVersion) {
- modifiers_.erase(
- std::remove(modifiers_.begin(), modifiers_.end(), modifier_),
- modifiers_.end());
+ std::erase(modifiers_, modifier_);
} else {
modifiers_.clear();
}
diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/x11/shared_x_display.cc b/third_party/libwebrtc/modules/desktop_capture/linux/x11/shared_x_display.cc
@@ -65,9 +65,7 @@ void SharedXDisplay::RemoveEventHandler(int type, XEventHandler* handler) {
if (handlers == event_handlers_.end())
return;
- std::vector<XEventHandler*>::iterator new_end =
- std::remove(handlers->second.begin(), handlers->second.end(), handler);
- handlers->second.erase(new_end, handlers->second.end());
+ std::erase(handlers->second, handler);
// Check if no handlers left for this event.
if (handlers->second.empty())
diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc
@@ -9,7 +9,6 @@
*/
#include "modules/video_capture/linux/pipewire_session.h"
-#include "modules/video_capture/linux/device_info_pipewire.h"
#include <pipewire/pipewire.h>
#include <spa/monitor/device.h>
@@ -36,6 +35,7 @@
#include "modules/portal/pipewire_utils.h"
#include "modules/portal/portal_request_response.h"
#include "modules/video_capture/linux/camera_portal.h"
+#include "modules/video_capture/linux/device_info_pipewire.h"
#include "modules/video_capture/video_capture_defines.h"
#include "modules/video_capture/video_capture_options.h"
#include "rtc_base/logging.h"
@@ -105,7 +105,8 @@ PipeWireNode::PipeWireNode(PipeWireSession* session,
.param = OnNodeParam,
};
- pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_, &node_events, this);
+ pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_,
+ &node_events, this);
}
// static
@@ -137,7 +138,8 @@ void PipeWireNode::OnNodeInfo(void* data, const pw_node_info* info) {
uint32_t id = info->params[i].id;
if (id == SPA_PARAM_EnumFormat &&
info->params[i].flags & SPA_PARAM_INFO_READ) {
- pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0, UINT32_MAX, nullptr);
+ pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0,
+ UINT32_MAX, nullptr);
break;
}
}
@@ -179,8 +181,9 @@ void PipeWireNode::OnNodeParam(void* data,
static_cast<int32_t>(1.0 * fract[i].num / fract[i].denom),
cap.maxFPS);
}
- } else if (choice == SPA_CHOICE_Range && fract[1].num > 0)
+ } else if (choice == SPA_CHOICE_Range && fract[1].num > 0) {
cap.maxFPS = 1.0 * fract[1].num / fract[1].denom;
+ }
}
}
@@ -307,7 +310,8 @@ void PipeWireSession::InitPipeWire(int fd) {
bool PipeWireSession::RegisterDeviceInfo(DeviceInfoPipeWire* device_info) {
RTC_CHECK(device_info);
MutexLock lock(&device_info_lock_);
- auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info);
+ auto it = std::find(device_info_list_.begin(), device_info_list_.end(),
+ device_info);
if (it == device_info_list_.end()) {
device_info_list_.push_back(device_info);
return true;
@@ -318,7 +322,8 @@ bool PipeWireSession::RegisterDeviceInfo(DeviceInfoPipeWire* device_info) {
bool PipeWireSession::DeRegisterDeviceInfo(DeviceInfoPipeWire* device_info) {
RTC_CHECK(device_info);
MutexLock lock(&device_info_lock_);
- auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info);
+ auto it = std::find(device_info_list_.begin(), device_info_list_.end(),
+ device_info);
if (it != device_info_list_.end()) {
device_info_list_.erase(it);
return true;
@@ -431,11 +436,10 @@ void PipeWireSession::OnCoreDone(void* data, uint32_t id, int seq) {
RTC_LOG(LS_VERBOSE) << "Enumerating PipeWire camera devices complete.";
// Remove camera devices with no capabilities
- auto it = std::remove_if(that->nodes_.begin(), that->nodes_.end(),
- [](const PipeWireNode::PipeWireNodePtr& node) {
- return node->capabilities().empty();
- });
- that->nodes_.erase(it, that->nodes_.end());
+ std::erase_if(that->nodes_,
+ [](const PipeWireNode::PipeWireNodePtr& node) {
+ return node->capabilities().empty();
+ });
that->Finish(VideoCaptureOptions::Status::SUCCESS);
}
@@ -479,11 +483,9 @@ void PipeWireSession::OnRegistryGlobal(void* data,
void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) {
PipeWireSession* that = static_cast<PipeWireSession*>(data);
- auto it = std::remove_if(that->nodes_.begin(), that->nodes_.end(),
- [id](const PipeWireNode::PipeWireNodePtr& node) {
- return node->id() == id;
- });
- that->nodes_.erase(it, that->nodes_.end());
+ std::erase_if(that->nodes_, [id](const PipeWireNode::PipeWireNodePtr& node) {
+ return node->id() == id;
+ });
that->NotifyDeviceChange();
}
diff --git a/third_party/libwebrtc/moz-patch-stack/s0074.patch b/third_party/libwebrtc/moz-patch-stack/s0074.patch
@@ -10,7 +10,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/158a888cad8869a2f
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
-index dfcb446fa0..bab528507a 100644
+index c28fd732df..5eb20ac152 100644
--- a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
+++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
@@ -57,6 +57,13 @@
diff --git a/third_party/libwebrtc/moz-patch-stack/s0075.patch b/third_party/libwebrtc/moz-patch-stack/s0075.patch
@@ -12,7 +12,7 @@ Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/237d19fe96dd7d25b
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
-index bab528507a..77c0d8576b 100644
+index 5eb20ac152..bd21833091 100644
--- a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
+++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
@@ -436,7 +436,9 @@ bool SharedScreenCastStreamPrivate::StartScreenCastStream(
diff --git a/third_party/libwebrtc/moz-patch-stack/s0076.patch b/third_party/libwebrtc/moz-patch-stack/s0076.patch
@@ -25,7 +25,7 @@ index 4c4366dad2..b4860feadb 100644
if (!is_win && !is_mac && !rtc_use_x11_extensions && !rtc_use_pipewire &&
diff --git a/modules/desktop_capture/linux/x11/shared_x_display.cc b/modules/desktop_capture/linux/x11/shared_x_display.cc
-index a5781a5fb3..e4360bd1b3 100644
+index 3cb2636f09..f7eca06820 100644
--- a/modules/desktop_capture/linux/x11/shared_x_display.cc
+++ b/modules/desktop_capture/linux/x11/shared_x_display.cc
@@ -11,7 +11,9 @@
@@ -38,7 +38,7 @@ index a5781a5fb3..e4360bd1b3 100644
#include <algorithm>
#include <cstddef>
-@@ -100,6 +102,7 @@ void SharedXDisplay::ProcessPendingXEvents() {
+@@ -98,6 +100,7 @@ void SharedXDisplay::ProcessPendingXEvents() {
}
void SharedXDisplay::IgnoreXServerGrabs() {
@@ -46,7 +46,7 @@ index a5781a5fb3..e4360bd1b3 100644
int test_event_base = 0;
int test_error_base = 0;
int major = 0;
-@@ -108,6 +111,7 @@ void SharedXDisplay::IgnoreXServerGrabs() {
+@@ -106,6 +109,7 @@ void SharedXDisplay::IgnoreXServerGrabs() {
&minor)) {
XTestGrabControl(display(), true);
}
diff --git a/third_party/libwebrtc/moz-patch-stack/s0098.patch b/third_party/libwebrtc/moz-patch-stack/s0098.patch
@@ -11,9 +11,9 @@ Differential Revision: https://phabricator.services.mozilla.com/D219218
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/60eb5ef11c8df7eb6e0d616cb76885d9109f114d
---
.../linux/device_info_pipewire.cc | 10 +++-
- .../video_capture/linux/pipewire_session.cc | 47 ++++++++++++++++++-
- .../video_capture/linux/pipewire_session.h | 26 +++++++++-
- 3 files changed, 79 insertions(+), 4 deletions(-)
+ .../video_capture/linux/pipewire_session.cc | 55 ++++++++++++++++++-
+ .../video_capture/linux/pipewire_session.h | 26 ++++++++-
+ 3 files changed, 85 insertions(+), 6 deletions(-)
diff --git a/modules/video_capture/linux/device_info_pipewire.cc b/modules/video_capture/linux/device_info_pipewire.cc
index 009e1408b9..a737f9bdb3 100644
@@ -42,25 +42,46 @@ index 009e1408b9..a737f9bdb3 100644
uint32_t DeviceInfoPipeWire::NumberOfDevices() {
RTC_CHECK(pipewire_session_);
diff --git a/modules/video_capture/linux/pipewire_session.cc b/modules/video_capture/linux/pipewire_session.cc
-index 2eb73a47e8..aa791b31c7 100644
+index 1582f85577..957590c92b 100644
--- a/modules/video_capture/linux/pipewire_session.cc
+++ b/modules/video_capture/linux/pipewire_session.cc
-@@ -9,6 +9,7 @@
- */
-
- #include "modules/video_capture/linux/pipewire_session.h"
+@@ -35,6 +35,7 @@
+ #include "modules/portal/pipewire_utils.h"
+ #include "modules/portal/portal_request_response.h"
+ #include "modules/video_capture/linux/camera_portal.h"
+#include "modules/video_capture/linux/device_info_pipewire.h"
+ #include "modules/video_capture/video_capture_defines.h"
+ #include "modules/video_capture/video_capture_options.h"
+ #include "rtc_base/logging.h"
+@@ -104,7 +105,8 @@ PipeWireNode::PipeWireNode(PipeWireSession* session,
+ .param = OnNodeParam,
+ };
+
+- pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_, &node_events, this);
++ pw_node_add_listener(reinterpret_cast<pw_node*>(proxy_), &node_listener_,
++ &node_events, this);
+ }
- #include <pipewire/pipewire.h>
- #include <spa/monitor/device.h>
-@@ -303,6 +304,28 @@ void PipeWireSession::InitPipeWire(int fd) {
+ // static
+@@ -136,7 +138,8 @@ void PipeWireNode::OnNodeInfo(void* data, const pw_node_info* info) {
+ uint32_t id = info->params[i].id;
+ if (id == SPA_PARAM_EnumFormat &&
+ info->params[i].flags & SPA_PARAM_INFO_READ) {
+- pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0, UINT32_MAX, nullptr);
++ pw_node_enum_params(reinterpret_cast<pw_node*>(that->proxy_), 0, id, 0,
++ UINT32_MAX, nullptr);
+ break;
+ }
+ }
+@@ -304,6 +307,30 @@ void PipeWireSession::InitPipeWire(int fd) {
Finish(VideoCaptureOptions::Status::ERROR);
}
+bool PipeWireSession::RegisterDeviceInfo(DeviceInfoPipeWire* device_info) {
+ RTC_CHECK(device_info);
+ MutexLock lock(&device_info_lock_);
-+ auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info);
++ auto it = std::find(device_info_list_.begin(), device_info_list_.end(),
++ device_info);
+ if (it == device_info_list_.end()) {
+ device_info_list_.push_back(device_info);
+ return true;
@@ -71,7 +92,8 @@ index 2eb73a47e8..aa791b31c7 100644
+bool PipeWireSession::DeRegisterDeviceInfo(DeviceInfoPipeWire* device_info) {
+ RTC_CHECK(device_info);
+ MutexLock lock(&device_info_lock_);
-+ auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info);
++ auto it = std::find(device_info_list_.begin(), device_info_list_.end(),
++ device_info);
+ if (it != device_info_list_.end()) {
+ device_info_list_.erase(it);
+ return true;
@@ -82,7 +104,7 @@ index 2eb73a47e8..aa791b31c7 100644
RTC_NO_SANITIZE("cfi-icall")
bool PipeWireSession::StartPipeWire(int fd) {
pw_init(/*argc=*/nullptr, /*argv=*/nullptr);
-@@ -375,6 +398,21 @@ void PipeWireSession::PipeWireSync() {
+@@ -376,6 +403,21 @@ void PipeWireSession::PipeWireSync() {
sync_seq_ = pw_core_sync(pw_core_, PW_ID_CORE, sync_seq_);
}
@@ -104,7 +126,7 @@ index 2eb73a47e8..aa791b31c7 100644
// static
void PipeWireSession::OnCoreError(void* data,
uint32_t id,
-@@ -433,6 +471,8 @@ void PipeWireSession::OnRegistryGlobal(void* data,
+@@ -433,6 +475,8 @@ void PipeWireSession::OnRegistryGlobal(void* data,
that->nodes_.push_back(PipeWireNode::Create(that, id, props));
that->PipeWireSync();
@@ -113,10 +135,10 @@ index 2eb73a47e8..aa791b31c7 100644
}
// static
-@@ -444,10 +484,15 @@ void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) {
- return node->id() == id;
- });
- that->nodes_.erase(it, that->nodes_.end());
+@@ -442,10 +486,15 @@ void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) {
+ std::erase_if(that->nodes_, [id](const PipeWireNode::PipeWireNodePtr& node) {
+ return node->id() == id;
+ });
+
+ that->NotifyDeviceChange();
}