mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
* chore: bump chromium in DEPS to 139.0.7242.0 * chore: update render_widget_host_view_mac.patch no code changes; just updating patch context Do a cleanup pass on the history swiper code | https://chromium-review.googlesource.com/c/chromium/src/+/6604367 * chore: update mas_avoid_private_macos_api_usage.patch.patch no code changes; just updating patch context [tracing] Delete base/trace_event/base_tracing.h | https://chromium-review.googlesource.com/c/chromium/src/+/6624012 * chore: update chore_provide_iswebcontentscreationoverridden_with_full_params.patch no manual changes; just updating patch context [ActorFramework] Refactor Actor Task Management | https://chromium-review.googlesource.com/c/chromium/src/+/6618684 * chore: update fix_move_autopipsettingshelper_behind_branding_buildflag.patch [pip] Tuck picture-in-picture windows when a file dialog is open | https://chromium-review.googlesource.com/c/chromium/src/+/6449682 Reland "[document pip] Restrict the size that a website can request" | https://chromium-review.googlesource.com/c/chromium/src/+/6372104 * chore: update feat_corner_smoothing_css_rule_and_blink_painting.patch Xref: corner-shape: constraint radii based on opposite corner overlap | https://chromium-review.googlesource.com/c/chromium/src/+/6592572 * chore: update revert_code_health_clean_up_stale_macwebcontentsocclusion.patch no manual changes; just updating patch context * chore: update fix_rename_sqlite_win32_exports_to_avoid_conflicts_with_node_js.patch no code changes; just updating patch context * chore: e patches all * Plumb Verify2QwacBinding and hook it up in QwacWebContentsObserver https://chromium-review.googlesource.com/c/chromium/src/+/6624719 * [Extensions] Remove host delegate OnMainFrameCreatedForBackgroundPage https://chromium-review.googlesource.com/c/chromium/src/+/6631123 * Extensions: Rename GetResourceURL to ResolveExtensionURL https://chromium-review.googlesource.com/c/chromium/src/+/6625053 * [NonClientFrameView] Consolidate NativeFrameViewMac https://chromium-review.googlesource.com/c/chromium/src/+/6614239 * ICWYU * [views-ax] Remove dead code WidgetAXTreeIDMap https://chromium-review.googlesource.com/c/chromium/src/+/6619701 * Reland "extensions: Add `WillPrepareForEvaluation` to setup MojoJS" https://chromium-review.googlesource.com/c/chromium/src/+/6630056 * NavigationThrottleRunner2: Remove MaybeAddThrottle https://chromium-review.googlesource.com/c/chromium/src/+/6628079 * [pip] Tuck picture-in-picture windows when a file dialog is open https://chromium-review.googlesource.com/c/chromium/src/+/6449682 * build: fix snapshot_blob.bin build error xref: https://issues.chromium.org/issues/416540976 * chore: e patches all * build: freeup disk space on macos * chore: bump chromium in DEPS to 139.0.7244.0 * chore: update printing.patch no manual changes; just updating patch context * chore: remove upstreamed ignore_parse_errors_for_resolveshortcutproperties.patch Prevent Windows crash on unexpected shortcut type | https://chromium-review.googlesource.com/c/chromium/src/+/6633298 * chore: e patches all * Revert "Reland "extensions: Add `WillPrepareForEvaluation` to setup MojoJS"" This reverts commit77c4f967a6. Revert CL for the high confidence crash culprit for http://crash/28f897bb9743dfe0 | https://chromium-review.googlesource.com/c/chromium/src/+/6641819 * Fix spec's expected base64-encoded PNG strings to match upstream changes. [rust png] Enable by default. | https://chromium-review.googlesource.com/c/chromium/src/+/6085801 * chore: bump chromium in DEPS to 139.0.7246.0 * chore: e patches all * chore: bump chromium in DEPS to 139.0.7248.0 * chore: update patches * siso: Enable Siso by default for non-Google builds https://chromium-review.googlesource.com/c/chromium/src/+/6638830 Disabling for now until we are ready to build siso on all platforms. * Revert "revert Don't use static variable for UseExternalPopupMenus" This reverts commite91e3894e6. * Update mac_sdk_min to match minimum required SDK version https://chromium-review.googlesource.com/c/chromium/src/+/6493969 (cherry picked from commit3e7cbe912d) * [video pip] Use default window styling on Mac https://chromium-review.googlesource.com/c/chromium/src/+/6648665 * Reland "Force the unintentional renderer process creation check by default" https://chromium-review.googlesource.com/c/chromium/src/+/6626905 * fixup: Reland "Force the unintentional renderer process creation check by default https://chromium-review.googlesource.com/c/chromium/src/+/6626905 * chore: bump chromium in DEPS to 139.0.7249.0 * fixup: Reland "Force the unintentional renderer process creation check by default https://chromium-review.googlesource.com/c/chromium/src/+/6626905 * chore: update patches * chore: bump chromium in DEPS to 139.0.7250.0 * chore: bump chromium in DEPS to 139.0.7252.0 * chore: bump chromium in DEPS to 139.0.7254.0 * 6638187: browser level TOCTOU check for coordinate target https://chromium-review.googlesource.com/c/chromium/src/+/6638187 * chore: fixup patch indices * chore: add missing base/notimplemented includes * 6652910: [Frame Cleanup] Push down/hide implementation-specific API https://chromium-review.googlesource.com/c/chromium/src/+/6652910 * chore: bump chromium in DEPS to 139.0.7256.0 * chore: fix lint * fixup! 6652910: [Frame Cleanup] Push down/hide implementation-specific API * fix: move HandleScope location * chore: bump chromium in DEPS to 139.0.7258.0 * fixup! [NonClientFrameView] Consolidate NativeFrameViewMac * Revert "chore: bump chromium in DEPS to 139.0.7258.0" This reverts commit264b2e934f. --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: deepak1556 <hop2deep@gmail.com>
101 lines
4.6 KiB
Diff
101 lines
4.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Athul Iddya <athul@iddya.com>
|
|
Date: Tue, 12 Sep 2023 22:19:46 -0700
|
|
Subject: fix: Handle PipeWire capturer initialization and management
|
|
|
|
This patch handles several fixes related to PipeWire capturer initialization
|
|
and management.
|
|
|
|
1. Mark PipeWire capturer as failed after session is closed
|
|
|
|
After a PipeWire screencast session is successfully started, the
|
|
consumer is expected to keep calling CaptureFrame() from the
|
|
DesktopCapturer interface in a loop to pull frames. A PipeWire
|
|
screencast session can be closed by the server on user action. Once the
|
|
session is closed, there's no point in calling CaptureFrame() again as
|
|
the capture has to be restarted. Inform the caller of the failure by
|
|
returning Result::ERROR_PERMANENT on the next invocation of
|
|
CaptureFrame().
|
|
|
|
2. Check PipeWire init before creating generic capturer
|
|
|
|
Check if PipeWire can be initialized before creating generic capturer.
|
|
This harmonizes the conditions with the ones used in Linux
|
|
implementations of DesktopCapturer::CreateRawScreenCapturer and
|
|
DesktopCapturer::CreateRawWindowCapturer.
|
|
|
|
3. Establishes fallback to X11 capturer when PipeWire fails to start
|
|
|
|
CL: https://webrtc-review.googlesource.com/c/src/+/279163
|
|
|
|
Desktop Capturer behaves inconsistently on Wayland. PipeWire does not
|
|
always successfully start; if it does not, we return a nullptr rather
|
|
than falling back on the X11 capturer, crashing the application. If the
|
|
X11 capturer is enabled, we should at minimum try to fallback to X11
|
|
for desktop capturer. This change re-enables that fallback, which was
|
|
previously default behavior.
|
|
|
|
diff --git a/modules/desktop_capture/desktop_capturer.cc b/modules/desktop_capture/desktop_capturer.cc
|
|
index ae9aba26ee56e8a0d48f81994f964b278c9019d3..758f1b44e01adb6807bc7c5f673d06fffbac5865 100644
|
|
--- a/modules/desktop_capture/desktop_capturer.cc
|
|
+++ b/modules/desktop_capture/desktop_capturer.cc
|
|
@@ -123,7 +123,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateGenericCapturer(
|
|
std::unique_ptr<DesktopCapturer> capturer;
|
|
|
|
#if defined(WEBRTC_USE_PIPEWIRE)
|
|
- if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
|
+ if (options.allow_pipewire() && BaseCapturerPipeWire::IsSupported()) {
|
|
capturer = std::make_unique<BaseCapturerPipeWire>(
|
|
options, CaptureType::kAnyScreenContent);
|
|
}
|
|
diff --git a/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc b/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
|
|
index b2864eeee599c2932b33cf380cd614977da80143..4148907763eeb3567fcb3424a80d7c21d28bd16c 100644
|
|
--- a/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
|
|
+++ b/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
|
|
@@ -123,6 +123,7 @@ void BaseCapturerPipeWire::OnScreenCastRequestResult(RequestResponse result,
|
|
void BaseCapturerPipeWire::OnScreenCastSessionClosed() {
|
|
if (!capturer_failed_) {
|
|
options_.screencast_stream()->StopScreenCastStream();
|
|
+ capturer_failed_ = true;
|
|
}
|
|
capturer_failed_ = true;
|
|
}
|
|
diff --git a/modules/desktop_capture/screen_capturer_linux.cc b/modules/desktop_capture/screen_capturer_linux.cc
|
|
index 94726750c5762e22b517445b23254513eb207aae..85946a6c7eef56a66c0ee2ec06bdc5f2ba49c53c 100644
|
|
--- a/modules/desktop_capture/screen_capturer_linux.cc
|
|
+++ b/modules/desktop_capture/screen_capturer_linux.cc
|
|
@@ -35,11 +35,10 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
|
|
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
|
|
|
#if defined(WEBRTC_USE_X11)
|
|
- if (!DesktopCapturer::IsRunningUnderWayland())
|
|
- return ScreenCapturerX11::CreateRawScreenCapturer(options);
|
|
-#endif // defined(WEBRTC_USE_X11)
|
|
-
|
|
+ return ScreenCapturerX11::CreateRawScreenCapturer(options);
|
|
+#else
|
|
return nullptr;
|
|
+#endif // defined(WEBRTC_USE_X11)
|
|
}
|
|
|
|
} // namespace webrtc
|
|
diff --git a/modules/desktop_capture/window_capturer_linux.cc b/modules/desktop_capture/window_capturer_linux.cc
|
|
index f621a63e72131fd8426361a078a55d1e07c0e436..91394503da5e7f6d090e2eaede02316cf51ad7b2 100644
|
|
--- a/modules/desktop_capture/window_capturer_linux.cc
|
|
+++ b/modules/desktop_capture/window_capturer_linux.cc
|
|
@@ -35,11 +35,10 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
|
|
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
|
|
|
#if defined(WEBRTC_USE_X11)
|
|
- if (!DesktopCapturer::IsRunningUnderWayland())
|
|
- return WindowCapturerX11::CreateRawWindowCapturer(options);
|
|
-#endif // defined(WEBRTC_USE_X11)
|
|
-
|
|
+ return WindowCapturerX11::CreateRawWindowCapturer(options);
|
|
+#else
|
|
return nullptr;
|
|
+#endif // defined(WEBRTC_USE_X11)
|
|
}
|
|
|
|
} // namespace webrtc
|