electron/patches/chromium/disable-redraw-lock.patch

77 lines
3.5 KiB
Diff
Raw Normal View History

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2018-09-21 00:30:26 +00:00
From: Heilig Benedek <benecene@gmail.com>
Date: Thu, 20 Sep 2018 17:47:54 -0700
Subject: disable-redraw-lock.patch
Chromium uses a custom window titlebar implementation on Windows when DWM
is disabled (Windows 7 and earlier, non Aero theme). The native titlebar
sometimes painted over this custom titlebar, so a workaround was put in
place to lock redraws in reaction to certain events if DWM is disabled,
since the code assumes that in that case, the custom titlebar is painted.
Electron forces the use of the native titlebar, which the workaround doesn't
take into account, and still locks redraws, causing weird repainting issues
in electron (and other applications). This patch provides a way to disable
the redraw locking mechanism, which fixes these issues. The electron issue
can be found at https://github.com/electron/electron/issues/1821
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
chore: bump chromium to 95.0.4629.0 (main) (#30676) * chore: bump chromium in DEPS to 95.0.4620.0 * chore: update patches * 3076261: Move args_ to private in ExtensionFunction https://chromium-review.googlesource.com/c/chromium/src/+/3076261 * [GURL -> SiteForCookies] content/public/browser/content_browser_client.h https://chromium-review.googlesource.com/c/chromium/src/+/3107759 * chore: fix -Wunreachable-code-return in node * Tracing to diagnose ContentScriptTracker-related bad message reports https://chromium-review.googlesource.com/c/chromium/src/+/3057922 * chore: bump chromium in DEPS to 95.0.4621.0 * chore: update patches * Remove title from the URL format on Windows. https://chromium-review.googlesource.com/c/chromium/src/+/3108445 * chore: bump chromium in DEPS to 95.0.4623.0 * Revert "chore: disable v8 oilpan" This reverts commit 5d255cf1d8e8efbb906047937a713279e5f800d0. (cherry picked from commit ba5cde4da2428020d99b7fb603c702878f95da78) * Change file paths in network context params to be relative. https://chromium-review.googlesource.com/c/chromium/src/+/3092927 * Code Health: Rename/replace content::WebUI::RegisterMessageCallback(). https://chromium-review.googlesource.com/c/chromium/src/+/3104691 * Migrate CanExecuteContentScriptSync to Mojo https://chromium-review.googlesource.com/c/chromium/src/+/3108452 * chore: update patches * remove unreachable code * Revert "Revert "chore: disable v8 oilpan"" This reverts commit fef495c0294e21760df51bddb5f7bf1ec9ed5f1e. * fixup mas patch * Reland "[include] Split out v8.h" https://chromium-review.googlesource.com/c/v8/v8/+/3113629 * chore: bump chromium in DEPS to 95.0.4624.0 * chore: bump chromium in DEPS to 95.0.4625.0 * chore: bump chromium in DEPS to 95.0.4626.0 * 3033504: Pass NavigationDownloadPolicy in CreateNewWindowParams https://chromium-review.googlesource.com/c/chromium/src/+/3033504 * 3058038: Introduce TestPrintingContext & test UpdatePrintSettings https://chromium-review.googlesource.com/c/chromium/src/+/3058038 * 3114943: [Conditional Focus][#4] Add tests and remove flag gating https://chromium-review.googlesource.com/c/chromium/src/+/3114943 * chore: update patch indices * chore: bump chromium in DEPS to 95.0.4627.0 * chore: update patches * 3093591: ozone: webpagepopups: calculate anchor for menu bounds. 4/* https://chromium-review.googlesource.com/c/chromium/src/+/3093591 * 3110414: [PA] Remove the leading cookie https://chromium-review.googlesource.com/c/chromium/src/+/3110414 * chore: update patches * 3076261: Move args_ to private in ExtensionFunction https://chromium-review.googlesource.com/c/chromium/src/+/3076261 * 3113629: Reland "[include] Split out v8.h" https://chromium-review.googlesource.com/c/v8/v8/+/3113629 * chore: bump chromium in DEPS to 95.0.4628.0 * chore: update patches * chore: bump chromium in DEPS to 95.0.4629.0 * chore: update patches * Fix chrome root store codegen for cross-compile builds. https://chromium-review.googlesource.com/c/chromium/src/+/3133701 Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-09-01 19:55:07 +00:00
index 21e96caaa87538f962b7446dc889bd0ece3ca986..21d64ed9c116088fb5f4becad8a5e827ff47f1c4 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
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-14 01:21:36 +00:00
@@ -307,6 +307,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500;
} // namespace
+bool HWNDMessageHandlerDelegate::HasNativeFrame() const {
+ return false;
+}
+
// A scoping class that prevents a window from being able to redraw in response
// to invalidations that may occur within it for the lifetime of the object.
//
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-14 01:21:36 +00:00
@@ -358,6 +362,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
cancel_unlock_(false),
should_lock_(owner_->IsVisible() && !owner->HasChildRenderingWindow() &&
::IsWindow(hwnd_) &&
+ !owner_->HasNativeFrame() &&
(!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) ||
!ui::win::IsAeroGlassEnabled())) {
if (should_lock_)
@@ -976,6 +981,10 @@ HWNDMessageHandler::RegisterUnadjustedMouseEvent() {
return scoped_enable;
}
+bool HWNDMessageHandler::HasNativeFrame() {
+ return delegate_->HasNativeFrame();
+}
+
////////////////////////////////////////////////////////////////////////////////
// HWNDMessageHandler, gfx::WindowImpl overrides:
diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h
index a338ec40a4052a40304d7cf8c4e222f539412e68..6c109dde127bb04b33d18f030ffe4ec2a2e044c6 100644
--- a/ui/views/win/hwnd_message_handler.h
+++ b/ui/views/win/hwnd_message_handler.h
chore: bump chromium to 92.0.4488.0 (master) (#28676) * chore: bump chromium in DEPS to 92.0.4478.0 * chore: update chromium patches * chore: update v8 patches * fix: add scale parameter to LookupIconFromFilepath Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2748317 Follow up: https://github.com/electron/electron/issues/28678 * build: depend on gtkprint config for gtk_util.h Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2824022 * build: add missing print_job_constants header Refs: unknown * chore: bump chromium in DEPS to 92.0.4479.0 * update patches * chore: bump chromium in DEPS to 92.0.4480.0 * chore: bump chromium in DEPS to 92.0.4481.0 * chore: bump chromium in DEPS to 92.0.4482.2 * chore: bump chromium in DEPS to 92.0.4483.0 * chore: update patches * chore: bump chromium in DEPS to 92.0.4484.0 * chore: bump chromium in DEPS to 92.0.4485.0 * fix patches * update patches * 2810414: [LSC] Add PRESUBMIT check for ASCIIToUTF16("...") and UTF8ToUTF16("...") https://chromium-review.googlesource.com/c/chromium/src/+/2810414 * 2781233: NotificationService: Plumb document_url for non-persistent notifications. https://chromium-review.googlesource.com/c/chromium/src/+/2781233 * fixup! 2810414: [LSC] Add PRESUBMIT check for ASCIIToUTF16("...") and UTF8ToUTF16("...") * 2836669: Refactor GTK build target and dependencies https://chromium-review.googlesource.com/c/chromium/src/+/2836669 * chore: bump chromium in DEPS to 92.0.4486.0 * update patches * fix DecrementCapturerCount patch * explicitly include badging.mojom.h * include ui/gtk/gtk_ui_factory.h for BuildGtkUi() * fixup! 2810414: [LSC] Add PRESUBMIT check for ASCIIToUTF16("...") and UTF8ToUTF16("...") * iwyu fix for base::size * iwyu for TRACE_EVENT0 * 2799631: Use structured interface for DevTools messages https://chromium-review.googlesource.com/c/chromium/src/+/2799631 * 2801573: Convert enum to enum class for Widget::InitParams::Activatable https://chromium-review.googlesource.com/c/chromium/src/+/2801573 * 2805764: Add ContentBrowserClient support for service worker-scoped binders https://chromium-review.googlesource.com/c/chromium/src/+/2805764 * fixup! 2799631: Use structured interface for DevTools messages * fixup! 2805764: Add ContentBrowserClient support for service worker-scoped binders * oops, use of linux_ui after std::move * fix devtools message handling for null params * disable node test parallel/test-debug-args https://chromium-review.googlesource.com/c/v8/v8/+/2843348 * fix gn check * chore: bump chromium in DEPS to 92.0.4487.0 * chore: update patches * chore: bump chromium in DEPS to 92.0.4488.0 * update patches * Remove vpython use from Chromium DEPS file https://chromium-review.googlesource.com/c/chromium/src/+/2810121 * Partial revert "workaround: disable CFG longjmp protection for Windows on Arm" https://chromium-review.googlesource.com/c/chromium/src/+/2788210 Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
2021-04-27 21:27:34 +00:00
@@ -202,6 +202,8 @@ class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl,
2019-03-21 22:45:52 +00:00
using TouchIDs = std::set<DWORD>;
chore: bump chromium to 62327c655093c821aa0fcfc6db53f5fd943e08c7 (master) (#19792) * chore: bump chromium in DEPS to f3bf493731e868e1f5f48e7e1adc02ea5eccfbbd * chore: bump chromium in DEPS to 4db0c87d4aa6f27ffa0b5fc77d20e10047962484 * chore: bump chromium in DEPS to d933a504c264dc8fe85267f47aef3588531875b5 * chore: bump chromium in DEPS to 34afdb68980f581ae911b85b727bc17e126cf5f9 * update disable-redraw-lock.patch https://chromium-review.googlesource.com/c/chromium/src/+/1600387 * update desktop_media_list.patch https://chromium-review.googlesource.com/c/chromium/src/+/1729156 * update notification_provenance.patch https://chromium-review.googlesource.com/c/chromium/src/+/1742779 * update printing.patch https://chromium-review.googlesource.com/c/chromium/src/+/1646772 * update verbose_generate_bpad_syms.patch https://chromium-review.googlesource.com/c/chromium/src/+/1745986 * update patch metadata * remove printing_compositor manifests https://chromium-review.googlesource.com/c/chromium/src/+/1742734 * update for URLLoaderFactoryType enum https://chromium-review.googlesource.com/c/chromium/src/+/1754716 * remove gin string16 converter https://chromium-review.googlesource.com/c/chromium/src/+/1750093 * ClearCompositorFrame() has been removed https://chromium-review.googlesource.com/c/chromium/src/+/1746301 * message_loop -> message_loop_current https://chromium-review.googlesource.com/c/chromium/src/+/1738552 * include resource_response header * pdf compositor no longer uses service manager https://chromium-review.googlesource.com/c/chromium/src/+/1742734 * chore: bump chromium in DEPS to 00d5933101d8d8dc9546eadbe7ee1b41077e6db1 * pane focus fns aren't pure virtual anymore https://chromium-review.googlesource.com/c/chromium/src/+/1708767 * fix: make std::hash value-non-const broken by https://chromium-review.googlesource.com/c/chromium/src/+/1711202 * update swiftshader in zip_manifests https://swiftshader-review.googlesource.com/c/SwiftShader/+/34911 * address feedback from @deepak1556 * don't enable kLegacyWindowsDWriteFontFallback https://chromium-review.googlesource.com/c/chromium/src/+/1753006 * chore: bump chromium in DEPS to 84497314005e1968da06804f8fde539d9872310e * update printing.patch remove bottom diff owing to https://chromium-review.googlesource.com/c/chromium/src/+/1678182 and update for https://chromium-review.googlesource.com/c/chromium/src/+/1678182 * convert CookieChangeListener to new Mojo types https://chromium-review.googlesource.com/c/chromium/src/+/1753371 * rename ui::ClipboardType -> ui::ClipboardBuffer https://chromium-review.googlesource.com/c/chromium/src/+/1758730 * logging::LoggingSettings log_file -> log_file_path https://chromium-review.googlesource.com/c/chromium/src/+/1699477 * roll DEPS to latest lkgr * fix: override GetFontLookupTableCacheDir() When Chromium goes to use its fallback font table creation code paths, it creates the cache directory it uses by calling GetFontLookupTableCacheDir() with a path that doesn't exist in Electron. To ensure that a legitimate file path is created, we need to override it with Electron's DIR_USER_DATA so it doesn't use chrome::DIR_USER_DATA. * chore: bump chromium in DEPS to 6758a0879931bc4df630a80a36c82d7855ae3155 * update pthread_fchdir patch https://chromium-review.googlesource.com/c/chromium/src/+/1759149 * update printing patch * update cookie usage and fn signatures https://chromium-review.googlesource.com/c/chromium/src/+/1758437 * chore: bump chromium in DEPS to bdaca97e1cc27fb977e56f30f74cdb906da9527e * remove fix_make_std_hash_value-non-const.patch https://chromium-review.googlesource.com/c/chromium/src/+/1762335 * Convert enum to enum class for FocusManager::FocusChangeReason https://chromium-review.googlesource.com/c/chromium/src/+/1767281 * roll DEPS to latest lkgr * update dom_storage_limits.patch https://chromium-review.googlesource.com/c/chromium/src/+/1767556
2019-08-24 01:14:23 +00:00
enum class DwmFrameState { kOff, kOn };
+ bool HasNativeFrame();
+
// Overridden from WindowImpl:
HICON GetDefaultWindowIcon() const override;
HICON GetSmallWindowIcon() const override;
diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h
index d8e0f1d3131aef80c9fcb6069df7d7f986af6605..5dbb192d0840ca0ded61397c399b774a8cb05cce 100644
--- a/ui/views/win/hwnd_message_handler_delegate.h
+++ b/ui/views/win/hwnd_message_handler_delegate.h
2019-01-16 18:07:52 +00:00
@@ -46,6 +46,8 @@ class VIEWS_EXPORT HWNDMessageHandlerDelegate {
// True if the widget associated with this window has a non-client view.
virtual bool HasNonClientView() const = 0;
+ virtual bool HasNativeFrame() const;
+
// Returns who we want to be drawing the frame. Either the system (Windows)
// will handle it or Chrome will custom draw it.
virtual FrameMode GetFrameMode() const = 0;