From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 189331582EF for ; Tue, 18 Feb 2025 18:58:45 +0000 (UTC) Received: from lists.gentoo.org (bobolink.gentoo.org [140.211.166.189]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: relay-lists.gentoo.org@gentoo.org) by smtp.gentoo.org (Postfix) with ESMTPSA id E88113432B9 for ; Tue, 18 Feb 2025 18:58:44 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id E22E4110470; Tue, 18 Feb 2025 18:58:43 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id D8144110470 for ; Tue, 18 Feb 2025 18:58:43 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (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) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 86D1134325B for ; Tue, 18 Feb 2025 18:58:43 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id E3A8E1236 for ; Tue, 18 Feb 2025 18:58:41 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1739905085.2bca6ba8b0bdacccb883071046b7a9b50ce32231.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: kde-plasma/kwin/, kde-plasma/kwin/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: kde-plasma/kwin/files/kwin-6.3.1-gcc15-workaround.patch kde-plasma/kwin/kwin-6.3.1.ebuild X-VCS-Directories: kde-plasma/kwin/ kde-plasma/kwin/files/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 2bca6ba8b0bdacccb883071046b7a9b50ce32231 X-VCS-Branch: master Date: Tue, 18 Feb 2025 18:58:41 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 6b4ae954-82d1-415a-a10e-a5c56d9cde8d X-Archives-Hash: 31dd15f75eb27b6c1155f10437935e9e commit: 2bca6ba8b0bdacccb883071046b7a9b50ce32231 Author: Sam James gentoo org> AuthorDate: Tue Feb 18 18:57:14 2025 +0000 Commit: Sam James gentoo org> CommitDate: Tue Feb 18 18:58:05 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2bca6ba8 kde-plasma/kwin: pull in workaround for GCC 15 Pull in workaround from upstream PR at https://invent.kde.org/plasma/kwin/-/merge_requests/7191. (There's changes requested before it gets merged but they're cosmetic.) No revbump as 6.3.1 was just pushed. Bug: https://bugs.kde.org/show_bug.cgi?id=500310 Bug: https://gcc.gnu.org/PR118923 Thanks-to: Kacper Słomiński gmail.com> Signed-off-by: Sam James gentoo.org> .../kwin/files/kwin-6.3.1-gcc15-workaround.patch | 92 ++++++++++++++++++++++ kde-plasma/kwin/kwin-6.3.1.ebuild | 4 + 2 files changed, 96 insertions(+) diff --git a/kde-plasma/kwin/files/kwin-6.3.1-gcc15-workaround.patch b/kde-plasma/kwin/files/kwin-6.3.1-gcc15-workaround.patch new file mode 100644 index 000000000000..3990682a5f9d --- /dev/null +++ b/kde-plasma/kwin/files/kwin-6.3.1-gcc15-workaround.patch @@ -0,0 +1,92 @@ +https://invent.kde.org/plasma/kwin/-/merge_requests/7191 +https://bugs.kde.org/show_bug.cgi?id=500310 +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118923 + +From 4d9a024f1b2f502de9a33024a2a762aefa4007cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Kacper=20S=C5=82omi=C5=84ski?= + +Date: Tue, 18 Feb 2025 18:16:59 +0100 +Subject: [PATCH] Factor out {previousRestricted,restricted}MoveArea calls out + of loops + +This works around a GCC 15 bug that causes KWin to crash. + +BUG: 500310 +--- + src/window.cpp | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +diff --git a/src/window.cpp b/src/window.cpp +index a05771e90c..1a56560280 100644 +--- a/src/window.cpp ++++ b/src/window.cpp +@@ -4026,25 +4026,29 @@ void Window::checkWorkspacePosition(QRectF oldGeometry, const VirtualDesktop *ol + auto moveAreaFunc = workspace()->inRearrange() ? &Workspace::previousRestrictedMoveArea : //... the restricted areas changed + &Workspace::restrictedMoveArea; //... when e.g. active desktop or screen changes + +- for (const QRect &r : (workspace()->*moveAreaFunc)(oldDesktop, StrutAreaTop)) { ++ const auto oldRectsTop = (workspace()->*moveAreaFunc)(oldDesktop, StrutAreaTop); ++ for (const QRect &r : oldRectsTop) { + QRect rect = r & oldGeomTall; + if (!rect.isEmpty()) { + oldTopMax = std::max(oldTopMax, rect.y() + rect.height()); + } + } +- for (const QRect &r : (workspace()->*moveAreaFunc)(oldDesktop, StrutAreaRight)) { ++ const auto oldRectsRight = (workspace()->*moveAreaFunc)(oldDesktop, StrutAreaRight); ++ for (const QRect &r : oldRectsRight) { + QRect rect = r & oldGeomWide; + if (!rect.isEmpty()) { + oldRightMax = std::min(oldRightMax, rect.x()); + } + } +- for (const QRect &r : (workspace()->*moveAreaFunc)(oldDesktop, StrutAreaBottom)) { ++ const auto oldRectsBottom = (workspace()->*moveAreaFunc)(oldDesktop, StrutAreaBottom); ++ for (const QRect &r : oldRectsBottom) { + QRect rect = r & oldGeomTall; + if (!rect.isEmpty()) { + oldBottomMax = std::min(oldBottomMax, rect.y()); + } + } +- for (const QRect &r : (workspace()->*moveAreaFunc)(oldDesktop, StrutAreaLeft)) { ++ const auto oldRectsLeft = (workspace()->*moveAreaFunc)(oldDesktop, StrutAreaLeft); ++ for (const QRect &r : oldRectsLeft) { + QRect rect = r & oldGeomWide; + if (!rect.isEmpty()) { + oldLeftMax = std::max(oldLeftMax, rect.x() + rect.width()); +@@ -4052,25 +4056,29 @@ void Window::checkWorkspacePosition(QRectF oldGeometry, const VirtualDesktop *ol + } + + // These 4 compute new bounds +- for (const QRect &r : workspace()->restrictedMoveArea(desktop, StrutAreaTop)) { ++ const auto newRectsTop = workspace()->restrictedMoveArea(desktop, StrutAreaTop); ++ for (const QRect &r : newRectsTop) { + QRect rect = r & newGeomTall; + if (!rect.isEmpty()) { + topMax = std::max(topMax, rect.y() + rect.height()); + } + } +- for (const QRect &r : workspace()->restrictedMoveArea(desktop, StrutAreaRight)) { ++ const auto newRectsRight = workspace()->restrictedMoveArea(desktop, StrutAreaRight); ++ for (const QRect &r : newRectsRight) { + QRect rect = r & newGeomWide; + if (!rect.isEmpty()) { + rightMax = std::min(rightMax, rect.x()); + } + } +- for (const QRect &r : workspace()->restrictedMoveArea(desktop, StrutAreaBottom)) { ++ const auto newRectsBottom = workspace()->restrictedMoveArea(desktop, StrutAreaBottom); ++ for (const QRect &r : newRectsBottom) { + QRect rect = r & newGeomTall; + if (!rect.isEmpty()) { + bottomMax = std::min(bottomMax, rect.y()); + } + } +- for (const QRect &r : workspace()->restrictedMoveArea(desktop, StrutAreaLeft)) { ++ const auto newRectsLeft = workspace()->restrictedMoveArea(desktop, StrutAreaLeft); ++ for (const QRect &r : newRectsLeft) { + QRect rect = r & newGeomWide; + if (!rect.isEmpty()) { + leftMax = std::max(leftMax, rect.x() + rect.width()); +-- +GitLab diff --git a/kde-plasma/kwin/kwin-6.3.1.ebuild b/kde-plasma/kwin/kwin-6.3.1.ebuild index b500c5ad9597..26d567553ec5 100644 --- a/kde-plasma/kwin/kwin-6.3.1.ebuild +++ b/kde-plasma/kwin/kwin-6.3.1.ebuild @@ -114,6 +114,10 @@ BDEPEND=" # -m 0755 to avoid suid with USE="-filecaps" FILECAPS=( -m 0755 cap_sys_nice=ep usr/bin/kwin_wayland ) +PATCHES=( + "${FILESDIR}"/${P}-gcc15-workaround.patch +) + src_prepare() { ecm_src_prepare