diff options
Diffstat (limited to 'mozilla-1678680.patch')
-rw-r--r-- | mozilla-1678680.patch | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/mozilla-1678680.patch b/mozilla-1678680.patch deleted file mode 100644 index 5c4953a..0000000 --- a/mozilla-1678680.patch +++ /dev/null @@ -1,73 +0,0 @@ -changeset: 560838:7a5a1784b5d1 -tag: tip -parent: 560835:7184fb5a42fb -user: Martin Stransky <stransky@redhat.com> -date: Fri Nov 27 17:29:07 2020 +0100 -files: third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h -description: -Bug 1678680 [PipeWire] Lock current_frame_ access as it can be used from multiple threads, r?dminor - -Differential Revision: https://phabricator.services.mozilla.com/D98080 - - -diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc ---- a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc -+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc -@@ -396,16 +396,17 @@ void BaseCapturerPipeWire::HandleBuffer( - DesktopSize video_size_prev = video_size_; - if (video_metadata_use_) { - video_size_ = DesktopSize(video_metadata->region.size.width, - video_metadata->region.size.height); - } else { - video_size_ = desktop_size_; - } - -+ rtc::CritScope lock(¤t_frame_lock_); - if (!current_frame_ || - (video_metadata_use_ && !video_size_.equals(video_size_prev))) { - current_frame_ = - std::make_unique<uint8_t[]> - (video_size_.width() * video_size_.height() * kBytesPerPixel); - } - - const int32_t dstStride = video_size_.width() * kBytesPerPixel; -@@ -872,16 +873,17 @@ void BaseCapturerPipeWire::Start(Callbac - } - - void BaseCapturerPipeWire::CaptureFrame() { - if (portal_init_failed_) { - callback_->OnCaptureResult(Result::ERROR_PERMANENT, nullptr); - return; - } - -+ rtc::CritScope lock(¤t_frame_lock_); - if (!current_frame_) { - callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr); - return; - } - - DesktopSize frame_size = desktop_size_; - if (video_metadata_use_) { - frame_size = video_size_; -diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h ---- a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h -+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h -@@ -79,16 +79,17 @@ class BaseCapturerPipeWire : public Desk - guint sources_request_signal_id_ = 0; - guint start_request_signal_id_ = 0; - - bool video_metadata_use_ = false; - DesktopSize video_size_; - DesktopSize desktop_size_ = {}; - DesktopCaptureOptions options_ = {}; - -+ rtc::CriticalSection current_frame_lock_; - std::unique_ptr<uint8_t[]> current_frame_; - Callback* callback_ = nullptr; - - bool portal_init_failed_ = false; - - void InitPortal(); - void InitPipeWire(); - - |