electron/patches/chromium/disable_compositor_recycling.patch
Electron Bot 2eb3bddb05
chore: bump chromium to 92.0.4505.0 (master) (#29058)
* chore: bump chromium in DEPS to 92.0.4500.2

* resolve conflicts

* update patches

* chore: cherry-pick 82434206f306 from chromium (#29060)

* fix patch

* chore: bump chromium in DEPS to 92.0.4501.0

* chore: bump chromium in DEPS to 92.0.4502.0

* chore: bump chromium in DEPS to 92.0.4503.0

* chore: update patches

* 2869869: [Code Health] Refactor ListValue::Insert in gpu compositor

https://chromium-review.googlesource.com/c/chromium/src/+/2869869

* 2877924: Separate InkDropHost from InkDropHostView

https://chromium-review.googlesource.com/c/chromium/src/+/2877924

* chore: bump chromium in DEPS to 92.0.4504.0

* update patches

* Fixup for Separate InkDropHost from InkDropHostView

https://chromium-review.googlesource.com/c/chromium/src/+/2877924

* 2873469: Compute hashes of .pak files during the build, and check it at runtime.

https://chromium-review.googlesource.com/c/chromium/src/+/2873469

* 2874397: Remove flag to disable microtasks scope consistency checks

https://chromium-review.googlesource.com/c/v8/v8/+/2874397

* 2881471: Remove unneeded trace_event.h includes in headers.

https://chromium-review.googlesource.com/c/chromium/src/+/2881471

* 2844717: [Keyboard Tooltip] Rename RWHV*::SetTooltipText to UpdateTooltipUnderCursor

https://chromium-review.googlesource.com/c/chromium/src/+/2844717

* chore: bump chromium in DEPS to 92.0.4505.0

* chore: update patches

* 2883887: Retire ScopedObserver in /chrome/browser/predictors.

https://chromium-review.googlesource.com/c/chromium/src/+/2883887

* 2883694: Retire ScopedObserver in /chrome/browser.

https://chromium-review.googlesource.com/c/chromium/src/+/2883694

* fixup after merge

* fixup: Remove flag to disable microtasks scope consistency checks

* Temporarily disable setcallhandler-test.js nan test

This test should be renabled once https://github.com/electron/electron/pull/29028 lands

* Use gin_helper::MicrotasksScope instead of v8::MicrotasksScope

* chore: bump chromium in DEPS to 92.0.4506.0

* update patches

* Revert "update patches"

This reverts commit 333ec0d4c205bd3cbee28d2bc3d068871dbb900a.

* Revert "chore: bump chromium in DEPS to 92.0.4506.0"

This reverts commit 2bd52f8cd89b173c8b15a61d74fa7539cdbf574b.

* Fixup: Use gin_helper::MicrotasksScope instead of v8::MicrotasksScope

* Fixup: Use gin_helper::MicrotasksScope instead of v8::MicrotasksScope

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
2021-05-13 21:21:36 -04:00

24 lines
1.7 KiB
Diff

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
index 42d4d1390a4bb5217a5b70855038d7f5aec7caf3..d0e6dc5c1c8b1201aafbadfa901113fa648aa439 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -489,7 +489,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) {