electron/patches/chromium/disable_compositor_recycling.patch

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

25 lines
1.7 KiB
Diff
Raw Normal View History

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Andy Locascio <andy@slack-corp.com>
Date: Wed, 21 Aug 2019 12:09:10 -0700
Subject: fix: disabling compositor recycling
Compositor recycling is useful for Chrome because there can be many tabs and spinning up a compositor for each one would be costly. In practice, Chrome uses the parent compositor code path of browser_compositor_view_mac.mm; the NSView of each tab is detached when it's hidden and attached when it's shown. For Electron, there is no parent compositor, so we're forced into the "own compositor" code path, which seems to be non-optimal and pretty ruthless in terms of the release of resources. Electron has no real concept of multiple tabs per window, so it should be okay to disable this ruthless recycling altogether in Electron.
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
chore: bump chromium to 110.0.5451.0 (main) (#36394) * chore: bump chromium in DEPS to 110.0.5425.0 * chore: bump chromium in DEPS to 110.0.5427.0 * chore: bump chromium in DEPS to 110.0.5429.0 * chore: bump chromium in DEPS to 110.0.5431.0 * chore: update patches/chromium/picture-in-picture.patch to fix upstream code shear https://chromium-review.googlesource.com/c/chromium/src/+/4024078 * chore: sync patch w/upstream shear: remove_usage_of_incognito_apis_in_the_spellchecker.patch https://chromium-review.googlesource.com/c/chromium/src/+/3967854 * chore: sync patch w/upstream shear: feat_expose_raw_response_headers_from_urlloader.patch https://chromium-review.googlesource.com/c/chromium/src/+/3983373 * chore: sync patch w/upstream shear: chromium/custom_protocols_plzserviceworker.patch https://chromium-review.googlesource.com/c/chromium/src/+/3983373 * build: update references to core_api_provider; its location was moved upstream Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4006696 * build: remove back_to_tab_image_button from our enable_picture_in_picture deps Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4024078 back_to_tab_image_button has been removed upstream * chore: update patches * chore: bump chromium in DEPS to 110.0.5433.0 * chore: sync patch w/upstream shear: chromium/printing.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4006638 * chore: sync patch w/trivial upstream shear: chromium/process_singleton.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4031817 * refactor: remove kAutofillCenterAlignedSuggestions feature flag check. This behavior had been an experiment behind a feature flag. The experiment was a success so the feature was kept & the flag was removed. Xref: https://chromium-review.googlesource.com/c/chromium/src/+/3870616 moves from disabled-by-default to enabled-by-default Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4030556 removed the feature flag * chore: update patches * chore: bump chromium in DEPS to 110.0.5435.0 * chore: update patches * chore: sync code with upstream change: AXLMode method name Xref: https://chromium-review.googlesource.com/c/chromium/src/+/3950054 * 3841761: Adapting code to support kSystemProfileSelectionDefaultNone experiment https://chromium-review.googlesource.com/c/chromium/src/+/3841761 * chore: bump chromium in DEPS to 110.0.5437.0 * 4040140: Pip 2.0: Merge VideoOverlayWindowViews and OverlayWindowViews https://chromium-review.googlesource.com/c/chromium/src/+/4040140 * 4045567: Fix a crash opening a popup from tab capture fullscreen https://chromium-review.googlesource.com/c/chromium/src/+/4045567 * chore: fixup patch indices * 4048263: Remove deprecated Value calls in frame_tracker_unittest.cc. https://chromium-review.googlesource.com/c/chromium/src/+/4048263 * 4004606: [intl] Migrate to ICU 72 https://chromium-review.googlesource.com/c/v8/v8/+/4004606 * chore: bump chromium in DEPS to 110.0.5439.0 * 3890670: Prerender: Add first implementation of prerender-in-new-tab mode https://chromium-review.googlesource.com/c/chromium/src/+/3890670 * chore: fixup patch indices * chore: bump chromium in DEPS to 110.0.5441.0 * chore: update patches * chore: bump chromium in DEPS to 110.0.5443.0 * 4035451: Remove remaining uses of ScopedNestableTaskAllower. https://chromium-review.googlesource.com/c/chromium/src/+/4035451 * chore: bump chromium in DEPS to 110.0.5445.0 * chore: update patches * fixup! 3890670: Prerender: Add first implementation of prerender-in-new-tab mode * test: disable parallel/test-worker-init-failure Refs https://chromium-review.googlesource.com/c/v8/v8/+/4017512 Refs https://github.com/nodejs/node-v8/issues/246 * chore: disable parallel/test-fetch Test is flaky on Linux CI, but runs fine locally. * chore: bump chromium in DEPS to 110.0.5451.0 * chore: update patches * chore: cleanup patch 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: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: electron-patch-conflict-fixer[bot] <83340002+electron-patch-conflict-fixer[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2022-12-05 22:59:19 +00:00
index 07dcac920740a029dfc69c123506bafd142eb4ef..1e17393b6477e39a25e5973b19393ba2e7e9a4f6 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -525,7 +525,11 @@
return;
host()->WasHidden();
- browser_compositor_->SetRenderWidgetHostIsHidden(true);
+ // Consider the RWHV occluded only if it is not attached to a window
+ // (e.g. unattached BrowserView). Otherwise we treat it as visible to
+ // prevent unnecessary compositor recycling.
+ const bool unattached = ![GetInProcessNSView() window];
+ browser_compositor_->SetRenderWidgetHostIsHidden(unattached);
}
void RenderWidgetHostViewMac::SetSize(const gfx::Size& size) {