mirror of
https://github.com/electron/electron.git
synced 2026-01-06 22:24:03 -05:00
* chore: bump chromium in DEPS to 145.0.7588.0 * fix(patch-conflict): update scroll_bounce_flag for split overscroll methods Chromium split IsElasticOverscrollEnabled() into two methods: IsElasticOverscrollEnabledOnRoot() and IsElasticOverscrollSupported(). Updated patch to apply the scroll-bounce command-line switch to both methods. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7233733 * fix(patch-conflict): update exclusive_access patch context Upstream refactored the profile variable declaration. Updated patch to match new surrounding context with brace-style if statement. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7239252 * fix(patch-conflict): update screen capture kit non-shareable filter Upstream refactored PiP window exclusion to use GetWindowsToExclude() helper function. Updated patch to combine non-shareable window filtering with the new helper's output. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7274596 * fix(patch-conflict): update corner smoothing CSS property id position Upstream added new internal overscroll CSS properties. Updated patch to add kElectronCornerSmoothing after the new entries. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7234051 * fix(patch-conflict): update permission patches for new permission types Upstream added new permission types: LOCAL_NETWORK, LOOPBACK_NETWORK, and GEOLOCATION_APPROXIMATE. Updated Electron permission patches to include these new types and renumber Electron-specific permissions. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7231952 * fix(patch-conflict): update memory query fallback for new function signature Upstream added AmountOfTotalPhysicalMemory() with PCHECK. Updated patch to maintain fallback logic with correct ByteSize return type. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7254886 * chore: update patch hunk headers * fix(patch): update reclient-configs patch to use new file mode The fix_add_python_remote_wrapper patch was using 'copy from' mode which caused inconsistent behavior between local and CI git versions. Changed to 'new file' mode for consistent patch application. * fix(patch-conflict): remove duplicate GEOLOCATION_APPROXIMATE case Upstream moved GEOLOCATION_APPROXIMATE earlier in the switch statement in GetPermissionString(). The 3-way merge kept both the old and new positions, causing a duplicate case error. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/6397637 * chore: update libcxx filenames for new headers * chore: bump chromium in DEPS to 145.0.7590.0 * chore: update patch hunk headers * fix(patch): update memory fallback return type to ByteSize Upstream changed the return type from ByteCount to ByteSize. * fix: suppress nodiscard warning in node_file.cc libc++ added [[nodiscard]] to std::filesystem::copy_options operator|= which causes build failures with -Werror. * 7229082: update CopyFromSurface to use CopyFromSurfaceResult Upstream changed CopyFromSurface callback to return base::expected<viz::CopyOutputBitmapWithMetadata, std::string> instead of SkBitmap, enabling better error handling. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7229082 * 7254070: add ip_address_space param to OnLocalNetworkAccessPermissionRequired Upstream added IPAddressSpace parameter to check address space for proper permission handling in Local Network Access. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7254070 * 7136679: add spelling_markers param to RequestCheckingOfText Upstream added spelling_markers parameter to report misspelling ranges from Blink to Spellcheck to IME. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7136679 * 7240487: remove second param from RegisterWebSafeIsolatedScheme Upstream removed the schemes_okay_to_appear_as_origin_headers_ parameter. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7240487 * 7254577: use explicit WebElement constructor WebElement default constructor now requires explicit construction rather than brace initialization. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7254577 * 7256335: remove override from CreateGlobalFeaturesForTesting Upstream removed BrowserProcess::CreateGlobalFeaturesForTesting virtual method so the override specifier is no longer valid. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7256335 * chore: add missing SingleThreadTaskRunner include A transitive include of SingleThreadTaskRunner was removed upstream, requiring an explicit include. Ref: Unable to locate specific CL (transitive include change) * 7260483: add LOCAL_NETWORK, LOOPBACK_NETWORK permission type cases Upstream added new permission types for Local Network Access split permissions. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7260483 * chore: update patch hunk headers * 7264893: update postMessage tests for file: origin serialization change Chromium now serializes file: origins as 'null' in MessageEvent per spec. This is a security improvement aligning with the HTML spec behavior. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7264893 * fix: add paths to custom scheme URLs in protocol tests Custom scheme URLs without paths (e.g. test-scheme://foo) cause a DCHECK crash in ASAN builds when CorsURLLoader tries to log the request via GenerateRequestLine -> PathForRequest, which asserts that the path is non-empty. Adding trailing slashes ensures URLs have valid paths. * chore: bump chromium in DEPS to 145.0.7592.0 * chore: update patches (trivial only) * chore: bump chromium in DEPS to 145.0.7594.0 * chore: bump chromium in DEPS to 145.0.7596.0 * chore: update accelerator.patch no manual changes; patch applied with fuzz 2 (offset 1 line) * chore: update patches (trivial only) * chore: node ./script/gen-libc++-filenames.js --------- Co-authored-by: Alice Zhao <alicelovescake@anthropic.com> Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com>
83 lines
3.6 KiB
Diff
83 lines
3.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Michal Pichlinski <michal.pichlinski@openfin.co>
|
|
Date: Thu, 15 Jun 2023 23:04:48 +0200
|
|
Subject: allow disabling throttling in the `viz::DisplayScheduler` per
|
|
`ui::Compositor`
|
|
|
|
In Chromium when the `viz::DisplayScheduler` is invisible it throttles
|
|
its work by dropping frame draws and swaps.
|
|
|
|
This patch allows disbling this throttling by preventing transition to
|
|
invisible state of the `viz::DisplayScheduler` owned
|
|
by the `ui::Compositor`.
|
|
|
|
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
|
|
index 2ddd010a675faa02c15a9a2339633e9ddebc727f..59298c6a7bb637886d8da49679d28044443c247f 100644
|
|
--- a/ui/compositor/compositor.cc
|
|
+++ b/ui/compositor/compositor.cc
|
|
@@ -370,7 +370,8 @@ void Compositor::SetLayerTreeFrameSink(
|
|
if (display_private_) {
|
|
disabled_swap_until_resize_ = false;
|
|
display_private_->Resize(size());
|
|
- display_private_->SetDisplayVisible(host_->IsVisible());
|
|
+ // Invisible display is throttling itself.
|
|
+ display_private_->SetDisplayVisible(background_throttling_ ? host_->IsVisible() : true);
|
|
display_private_->SetDisplayColorSpaces(display_color_spaces_);
|
|
display_private_->SetDisplayColorMatrix(
|
|
gfx::SkM44ToTransform(display_color_matrix_));
|
|
@@ -621,7 +622,9 @@ void Compositor::SetVisible(bool visible) {
|
|
// updated then. We need to call this even if the visibility hasn't changed,
|
|
// for the same reason.
|
|
if (display_private_)
|
|
- display_private_->SetDisplayVisible(visible);
|
|
+ // Invisible display is throttling itself.
|
|
+ display_private_->SetDisplayVisible(
|
|
+ background_throttling_ ? visible : true);
|
|
|
|
if (changed) {
|
|
observer_list_.Notify(&CompositorObserver::OnCompositorVisibilityChanged,
|
|
@@ -1085,6 +1088,15 @@ void Compositor::MaybeUpdateObserveBeginFrame() {
|
|
host_begin_frame_observer_->GetBoundRemote());
|
|
}
|
|
|
|
+void Compositor::SetBackgroundThrottling(bool background_throttling_enabled) {
|
|
+ background_throttling_ = background_throttling_enabled;
|
|
+ if (display_private_) {
|
|
+ // Invisible display is throttling itself.
|
|
+ display_private_->SetDisplayVisible(
|
|
+ background_throttling_ ? host_->IsVisible() : true);
|
|
+ }
|
|
+}
|
|
+
|
|
#if BUILDFLAG(IS_CHROMEOS)
|
|
void Compositor::SetSeamlessRefreshRates(
|
|
const std::vector<float>& seamless_refresh_rates) {
|
|
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h
|
|
index 25176dd54365848ff09f0de77d31aed77de54a15..f01bcd99f6834d38ac74998bfdf8be622fbd797b 100644
|
|
--- a/ui/compositor/compositor.h
|
|
+++ b/ui/compositor/compositor.h
|
|
@@ -514,6 +514,10 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
|
|
|
|
const cc::LayerTreeSettings& GetLayerTreeSettings() const;
|
|
|
|
+ // Sets |background_throttling_| responsible for suspending drawing
|
|
+ // and switching frames.
|
|
+ void SetBackgroundThrottling(bool background_throttling_enabled);
|
|
+
|
|
size_t saved_events_metrics_count_for_testing() const {
|
|
return host_->saved_events_metrics_count_for_testing();
|
|
}
|
|
@@ -724,6 +728,12 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
|
|
// See go/report-ux-metrics-at-painting for details.
|
|
bool animation_started_ = false;
|
|
|
|
+ // Background throttling is a default Chromium behaviour. It occurs
|
|
+ // when the |display_private_| is not visible by prevent drawing and swapping
|
|
+ // frames. When it is disabled we are keeping |display_private_| always
|
|
+ // visible in order to keep generating frames.
|
|
+ bool background_throttling_ = true;
|
|
+
|
|
TrackerId next_compositor_metrics_tracker_id_ = 1u;
|
|
struct TrackerState {
|
|
TrackerState();
|