summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/moz-patch-stack/0089.patch
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/moz-patch-stack/0089.patch')
-rw-r--r--third_party/libwebrtc/moz-patch-stack/0089.patch63
1 files changed, 36 insertions, 27 deletions
diff --git a/third_party/libwebrtc/moz-patch-stack/0089.patch b/third_party/libwebrtc/moz-patch-stack/0089.patch
index 1a2541f93f..dfd2faa87d 100644
--- a/third_party/libwebrtc/moz-patch-stack/0089.patch
+++ b/third_party/libwebrtc/moz-patch-stack/0089.patch
@@ -1,38 +1,47 @@
From: stransky <stransky@redhat.com>
Date: Tue, 29 Aug 2023 12:43:00 +0000
-Subject: Bug 1821629 [DMABuf] Don't use DMABuf if it's disabled by Firefox gfx
- config r=ng,webrtc-reviewers
+Subject: Bug 1821629 [Pipewire/DMABuf] Don't create dmabuf backend if it's
+ disabled r=ng,webrtc-reviewers
-Differential Revision: https://phabricator.services.mozilla.com/D172224
-Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/158a888cad8869a2f0026fa7cfaaa13ecbfcf2ed
+Depends on D172224
+
+Differential Revision: https://phabricator.services.mozilla.com/D172229
+Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/237d19fe96dd7d25b6a817415ee4e6854678d648
---
- .../linux/wayland/shared_screencast_stream.cc | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
+ .../linux/wayland/shared_screencast_stream.cc | 9 ++++++---
+ 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 0c26e7a7d5..22aa355e44 100644
+index 22aa355e44..61c6957d27 100644
--- a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
+++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
-@@ -28,6 +28,13 @@
- #include "rtc_base/synchronization/mutex.h"
- #include "rtc_base/time_utils.h"
+@@ -419,7 +419,9 @@ bool SharedScreenCastStreamPrivate::StartScreenCastStream(
+ RTC_LOG(LS_ERROR) << "Unable to open PipeWire library";
+ return false;
+ }
+- egl_dmabuf_ = std::make_unique<EglDmaBuf>();
++ if (mozilla::gfx::IsDMABufEnabled()) {
++ egl_dmabuf_ = std::make_unique<EglDmaBuf>();
++ }
+
+ pw_stream_node_id_ = stream_node_id;
+
+@@ -508,7 +510,8 @@ bool SharedScreenCastStreamPrivate::StartScreenCastStream(
+ for (uint32_t format : {SPA_VIDEO_FORMAT_BGRA, SPA_VIDEO_FORMAT_RGBA,
+ SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_RGBx}) {
+ // Modifiers can be used with PipeWire >= 0.3.33
+- if (has_required_pw_client_version && has_required_pw_server_version) {
++ if (egl_dmabuf_ &&
++ has_required_pw_client_version && has_required_pw_server_version) {
+ modifiers_ = egl_dmabuf_->QueryDmaBufModifiers(format);
+
+ if (!modifiers_.empty()) {
+@@ -927,7 +930,7 @@ bool SharedScreenCastStreamPrivate::ProcessDMABuffer(
-+// Wrapper for gfxVars::UseDMABuf() as we can't include gfxVars here.
-+// We don't want to use dmabuf of known broken systems.
-+// See FEATURE_DMABUF for details.
-+namespace mozilla::gfx {
-+bool IsDMABufEnabled();
-+}
-+
- namespace webrtc {
+ const uint n_planes = spa_buffer->n_datas;
- const int kBytesPerPixel = 4;
-@@ -294,7 +301,7 @@ void SharedScreenCastStreamPrivate::OnStreamParamChanged(
- that->modifier_ =
- has_modifier ? that->spa_video_format_.modifier : DRM_FORMAT_MOD_INVALID;
- std::vector<const spa_pod*> params;
-- const int buffer_types = has_modifier
-+ const int buffer_types = has_modifier && mozilla::gfx::IsDMABufEnabled()
- ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd)
- : (1 << SPA_DATA_MemFd);
+- if (!n_planes) {
++ if (!n_planes || !egl_dmabuf_) {
+ return false;
+ }