electron/patches/chromium/mas_disable_remote_layer.patch
electron-roller[bot] 061e2e5e73
chore: bump chromium to 113.0.5651.0 (main) (#37553)
* chore: bump chromium in DEPS to 113.0.5645.0

* chore: update patches/chromium/mas_avoid_usage_of_private_macos_apis.patch

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

Fix simple code shear

* chore: update patches/chromium/build_only_use_the_mas_build_config_in_the_required_components.patch

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

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

patch-fuzz update; no manual changes

* chore: remove patches/chromium/fix_x11_window_restore_minimized_maximized_window.patch

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

Upstreamed by zcbenz, so local patch is no longer needed

* chore: update chromium/printing.patch

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

Remove cookie parameter from PrintViewManagerBase::UpdatePrintSettings()

* chore: remove NOTIMPLEMENTED BrowserProcessImpl::GetBreadcrumbPersistentStorageManager()

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

method removed upstream, so we do not need to add a stub for it in the subclass

* chore: remove PrintViewManagerElectron::UpdatePrintSettings()

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

Previously, our implementation checked to see if we recognized the
cookie param that was passed in. If so, we reported a bad message.
Otherwise, we passed it up to the base class' UpdatePrintSettings().

CL4313019 removed the cookie param, so checking for a bad cookie
param is no longer necessary / no longer possible. Since the only
remaining task was to pass the work up to the base class, this commit
removes the subclass implmentation entirely.

* chore: update patches

* chore: bump chromium in DEPS to 113.0.5647.0

* chore: bump chromium in DEPS to 113.0.5649.2

* chore: bump chromium in DEPS to 113.0.5651.0

* chore: update patches

---------

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: deepak1556 <hop2deep@gmail.com>
2023-03-15 18:20:32 +09:00

151 lines
5.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cheng Zhao <zcbenz@gmail.com>
Date: Thu, 20 Sep 2018 17:48:49 -0700
Subject: mas: disable remote layer APIs (CAContext and CALayerHost) for MAS
build
Accordin to ccameron:
For apps that spend a lot of time watching video (especially fullscreen video),
the power/battery usage will likely increase 1.5x to 2x. For something that is,
e.g, scrolling, it'll be smaller, more like 1.15x or 1.25x.
In terms of performance, the impact will likely be fairly small -- any app that
could hit 60fps before will likely still be able to hit 60fps. There may even be
cases where performance improves when disabling remote CoreAnimation (remote
CoreAnimation is really only about battery usage).
diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.h b/gpu/ipc/service/image_transport_surface_overlay_mac.h
index 4f3673c2766993d9c41a1bc8013a9b26e31d37ce..4d9ca8c945c22801c172d4243bd50653cd441721 100644
--- a/gpu/ipc/service/image_transport_surface_overlay_mac.h
+++ b/gpu/ipc/service/image_transport_surface_overlay_mac.h
@@ -17,7 +17,9 @@
#include "ui/gl/gl_surface.h"
#include "ui/gl/presenter.h"
+#if !IS_MAS_BUILD()
@class CAContext;
+#endif
@class CALayer;
namespace ui {
@@ -73,10 +75,10 @@ class ImageTransportSurfaceOverlayMacEGL : public gl::Presenter {
base::WeakPtr<ImageTransportSurfaceDelegate> delegate_;
-#if BUILDFLAG(IS_MAC)
+#if BUILDFLAG(IS_MAC) && !IS_MAS_BUILD()
bool use_remote_layer_api_;
-#endif
base::scoped_nsobject<CAContext> ca_context_;
+#endif
std::unique_ptr<ui::CALayerTreeCoordinator> ca_layer_tree_coordinator_;
gfx::Size pixel_size_;
diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.mm b/gpu/ipc/service/image_transport_surface_overlay_mac.mm
index 34723c177874131ae7859671338b7da0be4da24a..1c6d47bae1ffbb621692d412f79a9c4ba5f7df83 100644
--- a/gpu/ipc/service/image_transport_surface_overlay_mac.mm
+++ b/gpu/ipc/service/image_transport_surface_overlay_mac.mm
@@ -55,7 +55,7 @@
ImageTransportSurfaceOverlayMacEGL::ImageTransportSurfaceOverlayMacEGL(
base::WeakPtr<ImageTransportSurfaceDelegate> delegate)
: delegate_(delegate),
-#if BUILDFLAG(IS_MAC)
+#if BUILDFLAG(IS_MAC) && !IS_MAS_BUILD()
use_remote_layer_api_(ui::RemoteLayerAPISupported()),
#endif
scale_factor_(1),
@@ -71,7 +71,7 @@
->workarounds()
.disable_av_sample_buffer_display_layer;
-#if BUILDFLAG(IS_MAC)
+#if BUILDFLAG(IS_MAC) && !IS_MAS_BUILD()
ca_layer_tree_coordinator_ = std::make_unique<ui::CALayerTreeCoordinator>(
use_remote_layer_api_, allow_av_sample_buffer_display_layer);
@@ -168,7 +168,7 @@
TRACE_EVENT_INSTANT2("test_gpu", "SwapBuffers", TRACE_EVENT_SCOPE_THREAD,
"GLImpl", static_cast<int>(gl::GetGLImplementation()),
"width", pixel_size_.width());
-#if BUILDFLAG(IS_MAC)
+#if BUILDFLAG(IS_MAC) && !IS_MAS_BUILD()
if (use_remote_layer_api_) {
params.ca_context_id = [ca_context_ contextId];
} else {
diff --git a/ui/accelerated_widget_mac/display_ca_layer_tree.mm b/ui/accelerated_widget_mac/display_ca_layer_tree.mm
index 2c4821b34f71d30ce814bd1f3cf9a7a76bbaac66..c7dc371c780a405f502a84c77e92251ae08f66e0 100644
--- a/ui/accelerated_widget_mac/display_ca_layer_tree.mm
+++ b/ui/accelerated_widget_mac/display_ca_layer_tree.mm
@@ -99,6 +99,7 @@ - (void)setContentsChanged;
}
void DisplayCALayerTree::GotCALayerFrame(uint32_t ca_context_id) {
+#if !IS_MAS_BUILD()
// Early-out if the remote layer has not changed.
if ([remote_layer_ contextId] == ca_context_id)
return;
@@ -123,6 +124,9 @@ - (void)setContentsChanged;
[io_surface_layer_ removeFromSuperlayer];
io_surface_layer_.reset();
}
+#else
+ NOTREACHED() << "Remote layer is being used in MAS build";
+#endif
}
void DisplayCALayerTree::GotIOSurfaceFrame(
diff --git a/ui/base/cocoa/remote_layer_api.h b/ui/base/cocoa/remote_layer_api.h
index 9b691e2f16c68235dd180a28b6eb2eefc91f8e4c..9d4a7fb36e671980024b895eaafab2d970ac2818 100644
--- a/ui/base/cocoa/remote_layer_api.h
+++ b/ui/base/cocoa/remote_layer_api.h
@@ -13,6 +13,7 @@
#include "base/component_export.h"
+#if !IS_MAS_BUILD()
// The CGSConnectionID is used to create the CAContext in the process that is
// going to share the CALayers that it is rendering to another process to
// display.
@@ -50,6 +51,8 @@ typedef uint32_t CAContextID;
#endif // __OBJC__
+#endif // MAS_BUILD
+
namespace ui {
// This function will check if all of the interfaces listed above are supported
diff --git a/ui/base/cocoa/remote_layer_api.mm b/ui/base/cocoa/remote_layer_api.mm
index e23eb7719a9798afe984c6af6a422167b93d89b5..d448bc09ee54fc77f1ed4d088d1369b96f83a1db 100644
--- a/ui/base/cocoa/remote_layer_api.mm
+++ b/ui/base/cocoa/remote_layer_api.mm
@@ -10,6 +10,7 @@
namespace ui {
+#if !IS_MAS_BUILD()
namespace {
// Control use of cross-process CALayers to display content directly from the
// GPU process on Mac.
@@ -17,8 +18,10 @@
"RemoteCoreAnimationAPI",
base::FEATURE_ENABLED_BY_DEFAULT);
} // namespace
+#endif
bool RemoteLayerAPISupported() {
+#if !IS_MAS_BUILD()
if (!base::FeatureList::IsEnabled(kRemoteCoreAnimationAPI))
return false;
@@ -50,6 +53,9 @@ bool RemoteLayerAPISupported() {
// If everything is there, we should be able to use the API.
return true;
+#else
+ return false;
+#endif // MAS_BUILD
}
} // namespace