From nobody Tue Aug 16 19:20:05 2022 X-Original-To: dev-commits-ports-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4M6gvn5xYpz4ZDGQ; Tue, 16 Aug 2022 19:20:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4M6gvn5jv2z3Qjb; Tue, 16 Aug 2022 19:20:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1660677605; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZXJ5gLjjlNDUrxXF/mER1rrBNyv4oxjH2gUkGEOE+rA=; b=kixNWCM3FowSYSFtX24cq265/77H+apHh4+bcJituvaPeCgghJttZGQRBE5vL2Lm3G/MST DHxAXGjrIFxgwnrBlV/Fr5IU5LqA+nMghoc36zCrIuCLaf5QNE9S8pmvtnvq7ra64JlOs6 RxDsvJR+xjeoh1UMmQH7btsxkNVejMkjEhzwDwtFh0Vh6Tv8KjMyPAAU4QpP4K6iXLwFBA c6/dKNiKQ//1sqPx9K+E59PcGDoouVH8eVxPrzFWvJNH6cHqvVB9Bjx8DyK9xZlCW07xmr qJx4uHzFsY4upTjhKnmaf499u7dUCTsSHlEl14cvmY0/QmEnpcuNM0Cxln8QBA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4M6gvn4RsSzKqm; Tue, 16 Aug 2022 19:20:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 27GJK5uB004717; Tue, 16 Aug 2022 19:20:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 27GJK5ka004713; Tue, 16 Aug 2022 19:20:05 GMT (envelope-from git) Date: Tue, 16 Aug 2022 19:20:05 GMT Message-Id: <202208161920.27GJK5ka004713@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-branches@FreeBSD.org From: Rene Ladan Subject: git: 53b38e91865a - 2022Q3 - www/chromium: two fixes from upstream List-Id: Commits to the quarterly branches of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-branches@freebsd.org X-BeenThere: dev-commits-ports-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rene X-Git-Repository: ports X-Git-Refname: refs/heads/2022Q3 X-Git-Reftype: branch X-Git-Commit: 53b38e91865aa83f30c798135ed923377354610b Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1660677605; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZXJ5gLjjlNDUrxXF/mER1rrBNyv4oxjH2gUkGEOE+rA=; b=KsCRCrgs154+fh54px2IZgmBNckh9rZYA3/M0IIhi/SDuWfjZ2JQ/y5NWWjeUVTKNOZtph HdX0NA4VD3zKz8u5zs+FgeuU7nb8tVWkNFV/fHFtxR5XbTzCfSdz3I6A6jamV92A21HZqZ MNxjt9ZQtPYYwVZOrKLgU2NS6vXII7mjD6p1CqVcO+lhmnqD2udWB7txM5F2NuhuFiBi2I QLo4F1JhdVrVdi4AVIPNuu1MewBBfpD0vLF81W/uFQh73ouaww+sRBY4Yr6gKgwjOs6Poe 6U0XzoTZsrBXUvkFcZ0ulKeEUx5HUeBBfxJi1Wx+eYdDaMv/NJKAtt6FW0aH7g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1660677605; a=rsa-sha256; cv=none; b=LtM4UYYarb8G06DJIObdh7MLKbT6KyqbeiefQnRUU5xC4LSON2ksN91W27fQ4Zf6SVmnkJ ADie/9QX+nhgb3XSHPrtby9YefR1rzzZBktIIvdQQn1WeYYwRP6Cqf7z+Sj3AorVIXSjw3 H+URxxSLrqcqvWYGL3lEy1Kg36EPH9HDxuH4FM+qNdT3IDBuNcr/3AGJNBXJXMwukO4v3/ /rimTvKdryI3vp9HanTg862WzR1/4Z/T27G4zHDsbDK79ANnYxaTzA0NxKYyfGey5PZP5w J2n2+GxCU8wU0JTVWUY9mAWrMxU81y/gpTQoYBs6+TgrtolKSGRgpbKssgHhKw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch 2022Q3 has been updated by rene: URL: https://cgit.FreeBSD.org/ports/commit/?id=53b38e91865aa83f30c798135ed923377354610b commit 53b38e91865aa83f30c798135ed923377354610b Author: Robert Nagy AuthorDate: 2022-08-15 16:50:19 +0000 Commit: Rene Ladan CommitDate: 2022-08-16 19:19:58 +0000 www/chromium: two fixes from upstream - std::is_same compiler error - X11 screensaver suspension commit 904c8cedf85c7223f96ea084953089fea9a36bdd Author: Ben Noordhuis Date: Thu Jul 07 10:28:11 2022 Fix std::is_same compiler error From 8c1ebea5f601b0b5247535dcdfd01755f3e6e1a6 Mon Sep 17 00:00:00 2001 From: Andrew Wolfers Date: Tue, 19 Jul 2022 15:01:25 +0000 Subject: [PATCH] [x11][ozone] Fix X11 screensaver suspension. (cherry picked from commit b108b8734f8256503267fd05c48c7bc22f033beb) --- www/chromium/Makefile | 1 + www/chromium/files/patch-ui_aura_screen__ozone.cc | 29 ++++++- www/chromium/files/patch-ui_aura_screen__ozone.h | 52 +++++++++++- www/chromium/files/patch-ui_base_x_x11__util.h | 13 +++ www/chromium/files/patch-ui_display_screen.cc | 33 ++++++-- www/chromium/files/patch-ui_display_screen.h | 57 +++++++++++-- ..._ozone_platform_wayland_host_wayland__screen.cc | 40 +++++++++ ...i_ozone_platform_wayland_host_wayland__screen.h | 54 ++++++++++++ ...tch-ui_ozone_platform_x11_x11__screen__ozone.cc | 43 ++++++++++ ...atch-ui_ozone_platform_x11_x11__screen__ozone.h | 35 ++++++++ .../patch-ui_ozone_public_platform__screen.cc | 18 ++++ .../files/patch-ui_ozone_public_platform__screen.h | 35 ++++++++ www/chromium/files/patch-v8_src_objects_simd.cc | 99 ++++++++++++++++++++++ 13 files changed, 489 insertions(+), 20 deletions(-) diff --git a/www/chromium/Makefile b/www/chromium/Makefile index 105000c1e678..e98ecb723010 100644 --- a/www/chromium/Makefile +++ b/www/chromium/Makefile @@ -1,5 +1,6 @@ PORTNAME= chromium PORTVERSION= 104.0.5112.79 +PORTREVISION= 1 CATEGORIES= www wayland MASTER_SITES= https://commondatastorage.googleapis.com/chromium-browser-official/ \ https://nerd.hu/distfiles/:external diff --git a/www/chromium/files/patch-ui_aura_screen__ozone.cc b/www/chromium/files/patch-ui_aura_screen__ozone.cc index 407604a9484c..95bea0388bb1 100644 --- a/www/chromium/files/patch-ui_aura_screen__ozone.cc +++ b/www/chromium/files/patch-ui_aura_screen__ozone.cc @@ -1,11 +1,32 @@ ---- ui/aura/screen_ozone.cc.orig 2022-07-22 17:30:31 UTC +--- ui/aura/screen_ozone.cc.orig 2022-08-15 13:11:31 UTC +++ ui/aura/screen_ozone.cc -@@ -107,7 +107,7 @@ display::Display ScreenOzone::GetPrimaryDisplay() cons +@@ -4,6 +4,8 @@ + + #include "ui/aura/screen_ozone.h" + ++#include ++ + #include "ui/aura/client/screen_position_client.h" + #include "ui/aura/window.h" + #include "ui/aura/window_tree_host.h" +@@ -107,9 +109,17 @@ display::Display ScreenOzone::GetPrimaryDisplay() cons return platform_screen_->GetPrimaryDisplay(); } -#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) +-bool ScreenOzone::SetScreenSaverSuspended(bool suspend) { +- return platform_screen_->SetScreenSaverSuspended(suspend); +#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) - bool ScreenOzone::SetScreenSaverSuspended(bool suspend) { - return platform_screen_->SetScreenSaverSuspended(suspend); ++ScreenOzone::ScreenSaverSuspenderOzone::ScreenSaverSuspenderOzone( ++ std::unique_ptr suspender) ++ : suspender_(std::move(suspender)) {} ++ ++ScreenOzone::ScreenSaverSuspenderOzone::~ScreenSaverSuspenderOzone() = default; ++ ++std::unique_ptr ++ScreenOzone::SuspendScreenSaver() { ++ return std::make_unique( ++ platform_screen_->SuspendScreenSaver()); } + #endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) + diff --git a/www/chromium/files/patch-ui_aura_screen__ozone.h b/www/chromium/files/patch-ui_aura_screen__ozone.h index c34014971143..536fc0ed5cd2 100644 --- a/www/chromium/files/patch-ui_aura_screen__ozone.h +++ b/www/chromium/files/patch-ui_aura_screen__ozone.h @@ -1,11 +1,57 @@ ---- ui/aura/screen_ozone.h.orig 2022-07-22 17:30:31 UTC +--- ui/aura/screen_ozone.h.orig 2022-08-15 13:11:31 UTC +++ ui/aura/screen_ozone.h -@@ -65,7 +65,7 @@ class AURA_EXPORT ScreenOzone : public display::Screen +@@ -11,11 +11,8 @@ + #include "build/chromeos_buildflags.h" + #include "ui/aura/aura_export.h" + #include "ui/display/screen.h" ++#include "ui/ozone/public/platform_screen.h" + +-namespace ui { +-class PlatformScreen; +-} +- + namespace aura { + + // display::Screen implementation on top of ui::PlatformScreen provided by +@@ -48,6 +45,10 @@ class AURA_EXPORT ScreenOzone : public display::Screen + display::Display GetDisplayMatching( + const gfx::Rect& match_rect) const override; + display::Display GetPrimaryDisplay() const override; ++#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) ++ std::unique_ptr SuspendScreenSaver() ++ override; ++#endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) + bool IsScreenSaverActive() const override; + base::TimeDelta CalculateIdleTime() const override; + void AddObserver(display::DisplayObserver* observer) override; +@@ -65,11 +66,27 @@ class AURA_EXPORT ScreenOzone : public display::Screen protected: ui::PlatformScreen* platform_screen() { return platform_screen_.get(); } -#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) +- bool SetScreenSaverSuspended(bool suspend) override; ++ private: +#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) - bool SetScreenSaverSuspended(bool suspend) override; ++ class ScreenSaverSuspenderOzone ++ : public display::Screen::ScreenSaverSuspender { ++ public: ++ explicit ScreenSaverSuspenderOzone( ++ std::unique_ptr ++ suspender); ++ ++ ScreenSaverSuspenderOzone(const ScreenSaverSuspenderOzone&) = delete; ++ ScreenSaverSuspenderOzone& operator=(const ScreenSaverSuspenderOzone&) = ++ delete; ++ ++ ~ScreenSaverSuspenderOzone() override; ++ ++ private: ++ std::unique_ptr ++ suspender_; ++ }; #endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) +- private: + gfx::AcceleratedWidget GetAcceleratedWidgetForWindow( + aura::Window* window) const; + diff --git a/www/chromium/files/patch-ui_base_x_x11__util.h b/www/chromium/files/patch-ui_base_x_x11__util.h new file mode 100644 index 000000000000..0d6634107a84 --- /dev/null +++ b/www/chromium/files/patch-ui_base_x_x11__util.h @@ -0,0 +1,13 @@ +--- ui/base/x/x11_util.h.orig 2022-08-15 13:11:31 UTC ++++ ui/base/x/x11_util.h +@@ -337,7 +337,9 @@ COMPONENT_EXPORT(UI_BASE_X) bool IsCompositingManagerP + COMPONENT_EXPORT(UI_BASE_X) bool IsX11WindowFullScreen(x11::Window window); + + // Suspends or resumes the X screen saver, and returns whether the operation was +-// successful. Must be called on the UI thread. ++// successful. Must be called on the UI thread. If called multiple times with ++// |suspend| set to true, the screen saver is not un-suspended until this method ++// is called an equal number of times with |suspend| set to false. + COMPONENT_EXPORT(UI_BASE_X) bool SuspendX11ScreenSaver(bool suspend); + + // Returns true if the window manager supports the given hint. diff --git a/www/chromium/files/patch-ui_display_screen.cc b/www/chromium/files/patch-ui_display_screen.cc index 77ea0c0b4224..ef832b6d1b8f 100644 --- a/www/chromium/files/patch-ui_display_screen.cc +++ b/www/chromium/files/patch-ui_display_screen.cc @@ -1,11 +1,34 @@ ---- ui/display/screen.cc.orig 2022-07-22 17:30:31 UTC +--- ui/display/screen.cc.orig 2022-08-15 13:11:31 UTC +++ ui/display/screen.cc -@@ -84,7 +84,7 @@ void Screen::SetDisplayForNewWindows(int64_t display_i +@@ -84,27 +84,12 @@ void Screen::SetDisplayForNewWindows(int64_t display_i display_id_for_new_windows_ = display_id; } -#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) +-std::unique_ptr Screen::SuspendScreenSaver() { +- SetScreenSaverSuspended(true); +- screen_saver_suspension_count_++; +- return base::WrapUnique(new Screen::ScreenSaverSuspender(this)); +-} +#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) - std::unique_ptr Screen::SuspendScreenSaver() { - SetScreenSaverSuspended(true); - screen_saver_suspension_count_++; ++Screen::ScreenSaverSuspender::~ScreenSaverSuspender() = default; + +-Screen::ScreenSaverSuspender::~ScreenSaverSuspender() { +- // Check that this suspender still refers to the active screen. Particularly +- // in tests, the screen might be destructed before the suspender. +- if (screen_ == GetScreen()) { +- screen_->screen_saver_suspension_count_--; +- if (screen_->screen_saver_suspension_count_ == 0) { +- screen_->SetScreenSaverSuspended(false); +- } +- } +-} +- +-bool Screen::SetScreenSaverSuspended(bool suspend) { ++std::unique_ptr Screen::SuspendScreenSaver() { + NOTIMPLEMENTED_LOG_ONCE(); +- return false; ++ return nullptr; + } + #endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) + diff --git a/www/chromium/files/patch-ui_display_screen.h b/www/chromium/files/patch-ui_display_screen.h index 0c68f862a44f..7156108d309d 100644 --- a/www/chromium/files/patch-ui_display_screen.h +++ b/www/chromium/files/patch-ui_display_screen.h @@ -1,6 +1,6 @@ ---- ui/display/screen.h.orig 2022-07-22 17:30:31 UTC +--- ui/display/screen.h.orig 2022-08-15 13:11:31 UTC +++ ui/display/screen.h -@@ -128,7 +128,7 @@ class DISPLAY_EXPORT Screen { +@@ -128,33 +128,27 @@ class DISPLAY_EXPORT Screen { // (both of which may or may not be `nearest_id`). display::ScreenInfos GetScreenInfosNearestDisplay(int64_t nearest_id) const; @@ -9,16 +9,57 @@ // Object which suspends the platform-specific screensaver for the duration of // its existence. class ScreenSaverSuspender { -@@ -200,7 +200,7 @@ class DISPLAY_EXPORT Screen { + public: +- ScreenSaverSuspender(const Screen&) = delete; +- ScreenSaverSuspender& operator=(const Screen&) = delete; ++ ScreenSaverSuspender() = default; + +- // Notifies |screen_| that this instance is being destructed, and causes its +- // platform-specific screensaver to be un-suspended if this is the last such +- // remaining instance. +- ~ScreenSaverSuspender(); ++ ScreenSaverSuspender(const ScreenSaverSuspender&) = delete; ++ ScreenSaverSuspender& operator=(const ScreenSaverSuspender&) = delete; + +- private: +- friend class Screen; +- +- explicit ScreenSaverSuspender(Screen* screen) : screen_(screen) {} +- +- Screen* screen_; ++ // Causes the platform-specific screensaver to be un-suspended iff this is ++ // the last remaining instance. ++ virtual ~ScreenSaverSuspender() = 0; + }; + + // Suspends the platform-specific screensaver until the returned +- // |ScreenSaverSuspender| is destructed. This method allows stacking multiple +- // overlapping calls, such that the platform-specific screensaver will not be +- // un-suspended until all returned |SreenSaverSuspender| instances have been +- // destructed. +- std::unique_ptr SuspendScreenSaver(); ++ // |ScreenSaverSuspender| is destructed, or returns nullptr if suspension ++ // failed. This method allows stacking multiple overlapping calls, such that ++ // the platform-specific screensaver will not be un-suspended until all ++ // returned |ScreenSaverSuspender| instances have been destructed. ++ virtual std::unique_ptr SuspendScreenSaver(); + #endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) + + // Returns whether the screensaver is currently running. +@@ -200,12 +194,6 @@ class DISPLAY_EXPORT Screen { const gfx::GpuExtraInfo& gpu_extra_info); protected: -#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) -+#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) - // Suspends or un-suspends the platform-specific screensaver, and returns - // whether the operation was successful. - virtual bool SetScreenSaverSuspended(bool suspend); -@@ -224,7 +224,7 @@ class DISPLAY_EXPORT Screen { +- // Suspends or un-suspends the platform-specific screensaver, and returns +- // whether the operation was successful. +- virtual bool SetScreenSaverSuspended(bool suspend); +-#endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX) +- + void set_shutdown(bool shutdown) { shutdown_ = shutdown; } + + private: +@@ -224,7 +212,7 @@ class DISPLAY_EXPORT Screen { int64_t display_id_for_new_windows_; int64_t scoped_display_id_for_new_windows_ = display::kInvalidDisplayId; diff --git a/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__screen.cc b/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__screen.cc new file mode 100644 index 000000000000..89b58cdfc90b --- /dev/null +++ b/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__screen.cc @@ -0,0 +1,40 @@ +--- ui/ozone/platform/wayland/host/wayland_screen.cc.orig 2022-08-15 13:11:31 UTC ++++ ui/ozone/platform/wayland/host/wayland_screen.cc +@@ -327,6 +327,37 @@ display::Display WaylandScreen::GetDisplayMatching( + return display_matching ? *display_matching : GetPrimaryDisplay(); + } + ++std::unique_ptr ++WaylandScreen::WaylandScreenSaverSuspender::Create(WaylandScreen& screen) { ++ auto suspender = base::WrapUnique(new WaylandScreenSaverSuspender(screen)); ++ if (suspender->is_suspending_) { ++ screen.screen_saver_suspension_count_++; ++ return suspender; ++ } ++ ++ return nullptr; ++} ++ ++WaylandScreen::WaylandScreenSaverSuspender::WaylandScreenSaverSuspender( ++ WaylandScreen& screen) ++ : screen_(screen.GetWeakPtr()) { ++ is_suspending_ = screen.SetScreenSaverSuspended(true); ++} ++ ++WaylandScreen::WaylandScreenSaverSuspender::~WaylandScreenSaverSuspender() { ++ if (screen_ && is_suspending_) { ++ screen_->screen_saver_suspension_count_--; ++ if (screen_->screen_saver_suspension_count_ == 0) { ++ screen_->SetScreenSaverSuspended(false); ++ } ++ } ++} ++ ++std::unique_ptr ++WaylandScreen::SuspendScreenSaver() { ++ return WaylandScreenSaverSuspender::Create(*this); ++} ++ + bool WaylandScreen::SetScreenSaverSuspended(bool suspend) { + if (!connection_->zwp_idle_inhibit_manager()) + return false; diff --git a/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__screen.h b/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__screen.h new file mode 100644 index 000000000000..e4d48c6286c0 --- /dev/null +++ b/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__screen.h @@ -0,0 +1,54 @@ +--- ui/ozone/platform/wayland/host/wayland_screen.h.orig 2022-08-15 13:11:31 UTC ++++ ui/ozone/platform/wayland/host/wayland_screen.h +@@ -68,7 +68,8 @@ class WaylandScreen : public PlatformScreen { + const gfx::Point& point) const override; + display::Display GetDisplayMatching( + const gfx::Rect& match_rect) const override; +- bool SetScreenSaverSuspended(bool suspend) override; ++ std::unique_ptr ++ SuspendScreenSaver() override; + bool IsScreenSaverActive() const override; + base::TimeDelta CalculateIdleTime() const override; + void AddObserver(display::DisplayObserver* observer) override; +@@ -76,7 +77,33 @@ class WaylandScreen : public PlatformScreen { + std::vector GetGpuExtraInfo( + const gfx::GpuExtraInfo& gpu_extra_info) override; + ++ protected: ++ // Suspends or un-suspends the platform-specific screensaver, and returns ++ // whether the operation was successful. Can be called more than once with the ++ // same value for |suspend|, but those states should not stack: the first ++ // alternating value should toggle the state of the suspend. ++ bool SetScreenSaverSuspended(bool suspend); ++ + private: ++ class WaylandScreenSaverSuspender ++ : public PlatformScreen::PlatformScreenSaverSuspender { ++ public: ++ WaylandScreenSaverSuspender(const WaylandScreenSaverSuspender&) = delete; ++ WaylandScreenSaverSuspender& operator=(const WaylandScreenSaverSuspender&) = ++ delete; ++ ++ ~WaylandScreenSaverSuspender() override; ++ ++ static std::unique_ptr Create( ++ WaylandScreen& screen); ++ ++ private: ++ explicit WaylandScreenSaverSuspender(WaylandScreen& screen); ++ ++ base::WeakPtr screen_; ++ bool is_suspending_ = false; ++ }; ++ + // All parameters are in DIP screen coordinates/units except |physical_size|, + // which is in physical pixels. + void AddOrUpdateDisplay(uint32_t output_id, +@@ -103,6 +130,7 @@ class WaylandScreen : public PlatformScreen { + #endif + + wl::Object idle_inhibitor_; ++ uint32_t screen_saver_suspension_count_ = 0; + + base::WeakPtrFactory weak_factory_; + }; diff --git a/www/chromium/files/patch-ui_ozone_platform_x11_x11__screen__ozone.cc b/www/chromium/files/patch-ui_ozone_platform_x11_x11__screen__ozone.cc new file mode 100644 index 000000000000..a3fcbadc62c7 --- /dev/null +++ b/www/chromium/files/patch-ui_ozone_platform_x11_x11__screen__ozone.cc @@ -0,0 +1,43 @@ +--- ui/ozone/platform/x11/x11_screen_ozone.cc.orig 2022-08-15 13:11:31 UTC ++++ ui/ozone/platform/x11/x11_screen_ozone.cc +@@ -4,6 +4,8 @@ + + #include "ui/ozone/platform/x11/x11_screen_ozone.h" + ++#include ++ + #include "base/containers/flat_set.h" + #include "ui/base/linux/linux_desktop.h" + #include "ui/base/x/x11_idle_query.h" +@@ -135,8 +137,29 @@ display::Display X11ScreenOzone::GetDisplayMatching( + return matching_display ? *matching_display : GetPrimaryDisplay(); + } + +-bool X11ScreenOzone::SetScreenSaverSuspended(bool suspend) { +- return SuspendX11ScreenSaver(suspend); ++X11ScreenOzone::X11ScreenSaverSuspender::X11ScreenSaverSuspender() { ++ is_suspending_ = SuspendX11ScreenSaver(true); ++} ++ ++std::unique_ptr ++X11ScreenOzone::X11ScreenSaverSuspender::Create() { ++ auto suspender = base::WrapUnique(new X11ScreenSaverSuspender()); ++ if (suspender->is_suspending_) { ++ return suspender; ++ } ++ ++ return nullptr; ++} ++ ++X11ScreenOzone::X11ScreenSaverSuspender::~X11ScreenSaverSuspender() { ++ if (is_suspending_) { ++ SuspendX11ScreenSaver(false); ++ } ++} ++ ++std::unique_ptr ++X11ScreenOzone::SuspendScreenSaver() { ++ return X11ScreenSaverSuspender::Create(); + } + + bool X11ScreenOzone::IsScreenSaverActive() const { diff --git a/www/chromium/files/patch-ui_ozone_platform_x11_x11__screen__ozone.h b/www/chromium/files/patch-ui_ozone_platform_x11_x11__screen__ozone.h new file mode 100644 index 000000000000..20d4e6641f98 --- /dev/null +++ b/www/chromium/files/patch-ui_ozone_platform_x11_x11__screen__ozone.h @@ -0,0 +1,35 @@ +--- ui/ozone/platform/x11/x11_screen_ozone.h.orig 2022-08-15 13:11:31 UTC ++++ ui/ozone/platform/x11/x11_screen_ozone.h +@@ -50,7 +50,8 @@ class X11ScreenOzone : public PlatformScreen, + const gfx::Point& point) const override; + display::Display GetDisplayMatching( + const gfx::Rect& match_rect) const override; +- bool SetScreenSaverSuspended(bool suspend) override; ++ std::unique_ptr ++ SuspendScreenSaver() override; + bool IsScreenSaverActive() const override; + base::TimeDelta CalculateIdleTime() const override; + void AddObserver(display::DisplayObserver* observer) override; +@@ -65,6 +66,22 @@ class X11ScreenOzone : public PlatformScreen, + + private: + friend class X11ScreenOzoneTest; ++ ++ class X11ScreenSaverSuspender ++ : public PlatformScreen::PlatformScreenSaverSuspender { ++ public: ++ X11ScreenSaverSuspender(const X11ScreenSaverSuspender&) = delete; ++ X11ScreenSaverSuspender& operator=(const X11ScreenSaverSuspender&) = delete; ++ ++ ~X11ScreenSaverSuspender() override; ++ ++ static std::unique_ptr Create(); ++ ++ private: ++ X11ScreenSaverSuspender(); ++ ++ bool is_suspending_ = false; ++ }; + + // Overridden from ui::XDisplayManager::Delegate: + void OnXDisplayListUpdated() override; diff --git a/www/chromium/files/patch-ui_ozone_public_platform__screen.cc b/www/chromium/files/patch-ui_ozone_public_platform__screen.cc new file mode 100644 index 000000000000..4c44f74009a2 --- /dev/null +++ b/www/chromium/files/patch-ui_ozone_public_platform__screen.cc @@ -0,0 +1,18 @@ +--- ui/ozone/public/platform_screen.cc.orig 2022-08-15 13:11:31 UTC ++++ ui/ozone/public/platform_screen.cc +@@ -30,9 +30,13 @@ std::string PlatformScreen::GetCurrentWorkspace() { + return {}; + } + +-bool PlatformScreen::SetScreenSaverSuspended(bool suspend) { ++PlatformScreen::PlatformScreenSaverSuspender::~PlatformScreenSaverSuspender() = ++ default; ++ ++std::unique_ptr ++PlatformScreen::SuspendScreenSaver() { + NOTIMPLEMENTED_LOG_ONCE(); +- return false; ++ return nullptr; + } + + bool PlatformScreen::IsScreenSaverActive() const { diff --git a/www/chromium/files/patch-ui_ozone_public_platform__screen.h b/www/chromium/files/patch-ui_ozone_public_platform__screen.h new file mode 100644 index 000000000000..072b90d5de2c --- /dev/null +++ b/www/chromium/files/patch-ui_ozone_public_platform__screen.h @@ -0,0 +1,35 @@ +--- ui/ozone/public/platform_screen.h.orig 2022-08-15 13:11:31 UTC ++++ ui/ozone/public/platform_screen.h +@@ -89,11 +89,27 @@ class COMPONENT_EXPORT(OZONE_BASE) PlatformScreen { + virtual display::Display GetDisplayMatching( + const gfx::Rect& match_rect) const = 0; + +- // Suspends or un-suspends the platform-specific screensaver, and returns +- // whether the operation was successful. Can be called more than once with the +- // same value for |suspend|, but those states should not stack: the first +- // alternating value should toggle the state of the suspend. +- virtual bool SetScreenSaverSuspended(bool suspend); ++ // Object which suspends the platform-specific screensaver for the duration of ++ // its existence. ++ class PlatformScreenSaverSuspender { ++ public: ++ PlatformScreenSaverSuspender() = default; ++ ++ PlatformScreenSaverSuspender(const PlatformScreenSaverSuspender&) = delete; ++ PlatformScreenSaverSuspender& operator=( ++ const PlatformScreenSaverSuspender&) = delete; ++ ++ // Causes the platform-specific screensaver to be un-suspended iff this is ++ // the last remaining instance. ++ virtual ~PlatformScreenSaverSuspender() = 0; ++ }; ++ ++ // Suspends the platform-specific screensaver until the returned ++ // |PlatformScreenSaverSuspender| is destructed, or returns nullptr if ++ // suspension failed. This method allows stacking multiple overlapping calls, ++ // such that the platform-specific screensaver will not be un-suspended until ++ // all returned |PlatformScreenSaverSuspender| instances have been destructed. ++ virtual std::unique_ptr SuspendScreenSaver(); + + // Returns whether the screensaver is currently running. + virtual bool IsScreenSaverActive() const; diff --git a/www/chromium/files/patch-v8_src_objects_simd.cc b/www/chromium/files/patch-v8_src_objects_simd.cc new file mode 100644 index 000000000000..0da0ff0b7948 --- /dev/null +++ b/www/chromium/files/patch-v8_src_objects_simd.cc @@ -0,0 +1,99 @@ +--- v8/src/objects/simd.cc.orig 2022-08-06 09:56:20 UTC ++++ v8/src/objects/simd.cc +@@ -151,10 +151,15 @@ inline int extract_first_nonzero_index(float64x2_t v) + template + inline uintptr_t fast_search_noavx(T* array, uintptr_t array_len, + uintptr_t index, T search_element) { +- static_assert(std::is_same::value || +- std::is_same::value || +- std::is_same::value); ++ static constexpr bool is_uint32 = ++ sizeof(T) == sizeof(uint32_t) && std::is_integral::value; ++ static constexpr bool is_uint64 = ++ sizeof(T) == sizeof(uint64_t) && std::is_integral::value; ++ static constexpr bool is_double = ++ sizeof(T) == sizeof(double) && std::is_floating_point::value; + ++ static_assert(is_uint32 || is_uint64 || is_double); ++ + #if !(defined(__SSE3__) || defined(NEON64)) + // No SIMD available. + return slow_search(array, array_len, index, search_element); +@@ -181,14 +186,14 @@ inline uintptr_t fast_search_noavx(T* array, uintptr_t + + // Inserting one of the vectorized loop + #ifdef __SSE3__ +- if constexpr (std::is_same::value) { ++ if constexpr (is_uint32) { + #define MOVEMASK(x) _mm_movemask_ps(_mm_castsi128_ps(x)) + #define EXTRACT(x) base::bits::CountTrailingZeros32(x) + VECTORIZED_LOOP_x86(__m128i, __m128i, _mm_set1_epi32, _mm_cmpeq_epi32, + MOVEMASK, EXTRACT) + #undef MOVEMASK + #undef EXTRACT +- } else if constexpr (std::is_same::value) { ++ } else if constexpr (is_double) { + #define SET1(x) _mm_castsi128_ps(_mm_set1_epi64x(x)) + #define CMP(a, b) _mm_cmpeq_pd(_mm_castps_pd(a), _mm_castps_pd(b)) + #define EXTRACT(x) base::bits::CountTrailingZeros32(x) +@@ -203,13 +208,13 @@ inline uintptr_t fast_search_noavx(T* array, uintptr_t + #undef EXTRACT + } + #elif defined(NEON64) +- if constexpr (std::is_same::value) { ++ if constexpr (is_uint32) { + VECTORIZED_LOOP_Neon(int32x4_t, int32x4_t, vdupq_n_u32, vceqq_u32, + vmaxvq_u32) +- } else if constexpr (std::is_same::value) { ++ } else if constexpr (is_uint64) { + VECTORIZED_LOOP_Neon(int64x2_t, int64x2_t, vdupq_n_u64, vceqq_u64, + vmaxvq_u32) +- } else if constexpr (std::is_same::value) { ++ } else if constexpr (is_double) { + VECTORIZED_LOOP_Neon(float64x2_t, float64x2_t, vdupq_n_f64, vceqq_f64, + vmaxvq_f64) + } +@@ -243,10 +248,15 @@ template + TARGET_AVX2 inline uintptr_t fast_search_avx(T* array, uintptr_t array_len, + uintptr_t index, + T search_element) { +- static_assert(std::is_same::value || +- std::is_same::value || +- std::is_same::value); ++ static constexpr bool is_uint32 = ++ sizeof(T) == sizeof(uint32_t) && std::is_integral::value; ++ static constexpr bool is_uint64 = ++ sizeof(T) == sizeof(uint64_t) && std::is_integral::value; ++ static constexpr bool is_double = ++ sizeof(T) == sizeof(double) && std::is_floating_point::value; + ++ static_assert(is_uint32 || is_uint64 || is_double); ++ + const int target_align = 32; + // Scalar loop to reach desired alignment + for (; +@@ -259,21 +269,21 @@ TARGET_AVX2 inline uintptr_t fast_search_avx(T* array, + } + + // Generating vectorized loop +- if constexpr (std::is_same::value) { ++ if constexpr (is_uint32) { + #define MOVEMASK(x) _mm256_movemask_ps(_mm256_castsi256_ps(x)) + #define EXTRACT(x) base::bits::CountTrailingZeros32(x) + VECTORIZED_LOOP_x86(__m256i, __m256i, _mm256_set1_epi32, _mm256_cmpeq_epi32, + MOVEMASK, EXTRACT) + #undef MOVEMASK + #undef EXTRACT +- } else if constexpr (std::is_same::value) { ++ } else if constexpr (is_uint64) { + #define MOVEMASK(x) _mm256_movemask_pd(_mm256_castsi256_pd(x)) + #define EXTRACT(x) base::bits::CountTrailingZeros32(x) + VECTORIZED_LOOP_x86(__m256i, __m256i, _mm256_set1_epi64x, + _mm256_cmpeq_epi64, MOVEMASK, EXTRACT) + #undef MOVEMASK + #undef EXTRACT +- } else if constexpr (std::is_same::value) { ++ } else if constexpr (is_double) { + #define CMP(a, b) _mm256_cmp_pd(a, b, _CMP_EQ_OQ) + #define EXTRACT(x) base::bits::CountTrailingZeros32(x) + VECTORIZED_LOOP_x86(__m256d, __m256d, _mm256_set1_pd, CMP,