mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
chore: cherry-pick 2 changes from webrtc (#39270)
This commit is contained in:
@@ -1,2 +1,4 @@
|
||||
fix_fallback_to_x11_capturer_on_wayland.patch
|
||||
fix_mark_pipewire_capturer_as_failed_after_session_is_closed.patch
|
||||
pipewire_capturer_fix_fcntl_call_when_duplicating_a_file_descriptor.patch
|
||||
pipewire_capturer_increase_buffer_size_to_avoid_buffer_overflow.patch
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <grulja@gmail.com>
|
||||
Date: Fri, 12 May 2023 20:59:06 +0200
|
||||
Subject: PipeWire capturer: fix fcntl call when duplicating a file descriptor
|
||||
|
||||
The fcntl() call has variable arguments, therefore we need to pass 0 to
|
||||
specify there are no other arguments for this call, otherwise we might
|
||||
end up with an argument that is random garbage.
|
||||
|
||||
Bug: webrtc:15174
|
||||
Change-Id: I34f16a942d80913b667d8ade7eed557b0233be01
|
||||
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/305120
|
||||
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
|
||||
Commit-Queue: Jan Grulich <grulja@gmail.com>
|
||||
Cr-Commit-Position: refs/heads/main@{#40060}
|
||||
|
||||
diff --git a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
|
||||
index 1eea8bfbf5b81bebaa77ff8dd2d55545ea8c21bd..17c895088a2e52f515af2815c92da4fe97524f80 100644
|
||||
--- a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
|
||||
+++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
|
||||
@@ -449,8 +449,8 @@ bool SharedScreenCastStreamPrivate::StartScreenCastStream(
|
||||
PipeWireThreadLoopLock thread_loop_lock(pw_main_loop_);
|
||||
|
||||
if (fd >= 0) {
|
||||
- pw_core_ = pw_context_connect_fd(pw_context_, fcntl(fd, F_DUPFD_CLOEXEC),
|
||||
- nullptr, 0);
|
||||
+ pw_core_ = pw_context_connect_fd(
|
||||
+ pw_context_, fcntl(fd, F_DUPFD_CLOEXEC, 0), nullptr, 0);
|
||||
} else {
|
||||
pw_core_ = pw_context_connect(pw_context_, nullptr, 0);
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <grulja@gmail.com>
|
||||
Date: Mon, 10 Jul 2023 10:07:38 +0200
|
||||
Subject: PipeWire capturer: increase buffer size to avoid buffer overflow
|
||||
|
||||
Recently added framerate option can cause a buffer overflow and make
|
||||
PipeWire to fail on negotiation, which effectively makes screen sharing
|
||||
not to work.
|
||||
|
||||
Bug: webrtc:15346
|
||||
Change-Id: I4a68e26c8f85ca287b06a25da500b6a7009e075f
|
||||
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/311541
|
||||
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
|
||||
Commit-Queue: Jan Grulich <grulja@gmail.com>
|
||||
Cr-Commit-Position: refs/heads/main@{#40413}
|
||||
|
||||
diff --git a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
|
||||
index 17c895088a2e52f515af2815c92da4fe97524f80..0102346036cbd5a080e559a5351078fcd418615f 100644
|
||||
--- a/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
|
||||
+++ b/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
|
||||
@@ -281,7 +281,7 @@ void SharedScreenCastStreamPrivate::OnStreamParamChanged(
|
||||
|
||||
that->stream_size_ = DesktopSize(width, height);
|
||||
|
||||
- uint8_t buffer[1024] = {};
|
||||
+ uint8_t buffer[2048] = {};
|
||||
auto builder = spa_pod_builder{buffer, sizeof(buffer)};
|
||||
|
||||
// Setup buffers and meta header for new format.
|
||||
@@ -364,7 +364,7 @@ void SharedScreenCastStreamPrivate::OnRenegotiateFormat(void* data, uint64_t) {
|
||||
{
|
||||
PipeWireThreadLoopLock thread_loop_lock(that->pw_main_loop_);
|
||||
|
||||
- uint8_t buffer[2048] = {};
|
||||
+ uint8_t buffer[4096] = {};
|
||||
|
||||
spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)};
|
||||
|
||||
@@ -482,7 +482,7 @@ bool SharedScreenCastStreamPrivate::StartScreenCastStream(
|
||||
|
||||
pw_stream_add_listener(pw_stream_, &spa_stream_listener_,
|
||||
&pw_stream_events_, this);
|
||||
- uint8_t buffer[2048] = {};
|
||||
+ uint8_t buffer[4096] = {};
|
||||
|
||||
spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)};
|
||||
|
||||
Reference in New Issue
Block a user