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 2A07E1582EF for ; Wed, 26 Feb 2025 08:55:38 +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 15678343281 for ; Wed, 26 Feb 2025 08:55:38 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id 4BA421103AC; Wed, 26 Feb 2025 08:55:36 +0000 (UTC) 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) server-digest SHA256) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id 40A851103AC for ; Wed, 26 Feb 2025 08:55:36 +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 E119634327C for ; Wed, 26 Feb 2025 08:55:35 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 4E64E27FE for ; Wed, 26 Feb 2025 08:55:34 +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: <1740560093.0c09ada8cd1de38b5103a979d0ad154f3135917e.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: 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/files/kwin-6.3.2-revert-fix-hang.patch X-VCS-Directories: kde-plasma/kwin/files/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 0c09ada8cd1de38b5103a979d0ad154f3135917e X-VCS-Branch: master Date: Wed, 26 Feb 2025 08:55:34 +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: af349aa2-cea3-452f-8a84-827e04d0fb91 X-Archives-Hash: 7f010fd18b2c766a7c91d5743ff0b3e6 commit: 0c09ada8cd1de38b5103a979d0ad154f3135917e Author: Sam James gentoo org> AuthorDate: Wed Feb 26 08:54:53 2025 +0000 Commit: Sam James gentoo org> CommitDate: Wed Feb 26 08:54:53 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0c09ada8 kde-plasma/kwin: drop unused patches Signed-off-by: Sam James gentoo.org> .../kwin/files/kwin-6.3.1-gcc15-workaround.patch | 92 ------ .../kwin/files/kwin-6.3.2-revert-fix-hang.patch | 307 --------------------- 2 files changed, 399 deletions(-) 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 deleted file mode 100644 index 3990682a5f9d..000000000000 --- a/kde-plasma/kwin/files/kwin-6.3.1-gcc15-workaround.patch +++ /dev/null @@ -1,92 +0,0 @@ -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/files/kwin-6.3.2-revert-fix-hang.patch b/kde-plasma/kwin/files/kwin-6.3.2-revert-fix-hang.patch deleted file mode 100644 index 9b68efb94bec..000000000000 --- a/kde-plasma/kwin/files/kwin-6.3.2-revert-fix-hang.patch +++ /dev/null @@ -1,307 +0,0 @@ -https://invent.kde.org/plasma/kwin/-/commit/544f3d1ae355d72cab0f28df5533b67085f85e88 - -From 544f3d1ae355d72cab0f28df5533b67085f85e88 Mon Sep 17 00:00:00 2001 -From: Xaver Hugl -Date: Tue, 25 Feb 2025 22:49:06 +0100 -Subject: [PATCH] Revert "workspace: better deal with having more outputs than - the GPU can drive" - -This reverts commit a23949582f05c1db7c9bb3bf7fd0292b7120045d. For some systems it caused -an infinite loop on startup ---- a/src/backends/drm/drm_backend.cpp -+++ b/src/backends/drm/drm_backend.cpp -@@ -367,7 +367,7 @@ size_t DrmBackend::gpuCount() const - return m_gpus.size(); - } - --OutputConfigurationError DrmBackend::applyOutputChanges(const OutputConfiguration &config) -+bool DrmBackend::applyOutputChanges(const OutputConfiguration &config) - { - QList toBeEnabled; - QList toBeDisabled; -@@ -386,20 +386,14 @@ OutputConfigurationError DrmBackend::applyOutputChanges(const OutputConfiguratio - } - } - } -- const auto error = gpu->testPendingConfiguration(); -- if (error != DrmPipeline::Error::None) { -+ if (gpu->testPendingConfiguration() != DrmPipeline::Error::None) { - for (const auto &output : std::as_const(toBeEnabled)) { - output->revertQueuedChanges(); - } - for (const auto &output : std::as_const(toBeDisabled)) { - output->revertQueuedChanges(); - } -- if (error == DrmPipeline::Error::NotEnoughCrtcs) { -- // TODO make this more specific, this is per GPU! -- return OutputConfigurationError::TooManyEnabledOutputs; -- } else { -- return OutputConfigurationError::Unknown; -- } -+ return false; - } - } - // first, apply changes to drm outputs. -@@ -418,7 +412,7 @@ OutputConfigurationError DrmBackend::applyOutputChanges(const OutputConfiguratio - for (const auto &output : std::as_const(m_virtualOutputs)) { - output->applyChanges(config); - } -- return OutputConfigurationError::None; -+ return true; - } - - void DrmBackend::setRenderBackend(DrmRenderBackend *backend) ---- a/src/backends/drm/drm_backend.h -+++ b/src/backends/drm/drm_backend.h -@@ -73,7 +73,7 @@ Q_SIGNALS: - void gpuRemoved(DrmGpu *gpu); - - protected: -- OutputConfigurationError applyOutputChanges(const OutputConfiguration &config) override; -+ bool applyOutputChanges(const OutputConfiguration &config) override; - - private: - friend class DrmGpu; ---- a/src/backends/drm/drm_gpu.cpp -+++ b/src/backends/drm/drm_gpu.cpp -@@ -352,7 +352,7 @@ DrmPipeline::Error DrmGpu::checkCrtcAssignment(QList connectors, - } - if (!connectors.empty()) { - // we have no crtcs left to drive the remaining connectors -- return DrmPipeline::Error::NotEnoughCrtcs; -+ return DrmPipeline::Error::InvalidArguments; - } - return testPipelines(); - } -@@ -442,10 +442,6 @@ DrmPipeline::Error DrmGpu::testPendingConfiguration() - output->cursorLayer()->setEnabled(false); - } - } -- if (connectors.size() > crtcs.size()) { -- // this can't work, we can return early -- return DrmPipeline::Error::NotEnoughCrtcs; -- } - return checkCrtcAssignment(connectors, crtcs); - } - ---- a/src/backends/drm/drm_pipeline.h -+++ b/src/backends/drm/drm_pipeline.h -@@ -48,7 +48,6 @@ public: - NoPermission, - FramePending, - TestBufferFailed, -- NotEnoughCrtcs, - Unknown, - }; - Q_ENUM(Error) ---- a/src/core/outputbackend.cpp -+++ b/src/core/outputbackend.cpp -@@ -43,7 +43,7 @@ std::unique_ptr OutputBackend::createQPainterBackend() - return nullptr; - } - --OutputConfigurationError OutputBackend::applyOutputChanges(const OutputConfiguration &config) -+bool OutputBackend::applyOutputChanges(const OutputConfiguration &config) - { - const auto availableOutputs = outputs(); - QList toBeEnabledOutputs; -@@ -63,7 +63,7 @@ OutputConfigurationError OutputBackend::applyOutputChanges(const OutputConfigura - for (const auto &output : toBeDisabledOutputs) { - output->applyChanges(config); - } -- return OutputConfigurationError::None; -+ return true; - } - - Output *OutputBackend::findOutput(const QString &name) const ---- a/src/core/outputbackend.h -+++ b/src/core/outputbackend.h -@@ -92,7 +92,7 @@ public: - /** - * Applies the output changes. Default implementation only sets values common between platforms - */ -- virtual OutputConfigurationError applyOutputChanges(const OutputConfiguration &config); -+ virtual bool applyOutputChanges(const OutputConfiguration &config); - - virtual Session *session() const; - ---- a/src/effect/globals.h -+++ b/src/effect/globals.h -@@ -451,12 +451,6 @@ enum WindowTypeMask { - }; - Q_DECLARE_FLAGS(WindowTypes, WindowTypeMask) - --enum class OutputConfigurationError { -- None, -- Unknown, -- TooManyEnabledOutputs, --}; -- - } // namespace - - Q_DECLARE_METATYPE(std::chrono::nanoseconds) ---- a/src/wayland/outputmanagement_v2.cpp -+++ b/src/wayland/outputmanagement_v2.cpp -@@ -487,15 +487,11 @@ void OutputConfigurationV2Interface::kde_output_configuration_v2_apply(Resource - return pair.second->handle(); - }); - } -- switch (workspace()->applyOutputConfiguration(config, sortedOrder)) { -- case OutputConfigurationError::None: -+ if (workspace()->applyOutputConfiguration(config, sortedOrder)) { - send_applied(); -- break; -- case OutputConfigurationError::Unknown: -- case OutputConfigurationError::TooManyEnabledOutputs: -+ } else { - // TODO provide a more accurate error reason once the driver actually gives us anything - sendFailure(resource, i18n("The driver rejected the output configuration")); -- break; - } - } - ---- a/src/workspace.cpp -+++ b/src/workspace.cpp -@@ -496,11 +496,10 @@ Workspace::~Workspace() - _self = nullptr; - } - --OutputConfigurationError Workspace::applyOutputConfiguration(const OutputConfiguration &config, const std::optional> &outputOrder) -+bool Workspace::applyOutputConfiguration(const OutputConfiguration &config, const std::optional> &outputOrder) - { -- auto error = kwinApp()->outputBackend()->applyOutputChanges(config); -- if (error != OutputConfigurationError::None) { -- return error; -+ if (!kwinApp()->outputBackend()->applyOutputChanges(config)) { -+ return false; - } - updateOutputs(outputOrder); - m_outputConfigStore->storeConfig(kwinApp()->outputBackend()->outputs(), m_lidSwitchTracker->isLidClosed(), config, m_outputOrder); -@@ -523,7 +522,7 @@ OutputConfigurationError Workspace::applyOutputConfiguration(const OutputConfigu - output->renderLoop()->scheduleRepaint(); - } - -- return OutputConfigurationError::None; -+ return true; - } - - void Workspace::updateOutputConfiguration() -@@ -540,12 +539,6 @@ void Workspace::updateOutputConfiguration() - return; - } - -- assignBrightnessDevices(); -- -- const bool alreadyHaveEnabledOutputs = std::ranges::any_of(outputs, [](Output *o) { -- return o->isEnabled(); -- }); -- - // Update the output order to a fallback list, to avoid dangling pointers - const auto setFallbackOutputOrder = [this, &outputs]() { - auto newOrder = outputs; -@@ -559,62 +552,40 @@ void Workspace::updateOutputConfiguration() - setOutputOrder(newOrder); - }; - -- QList toEnable = outputs; -- OutputConfigurationError error = OutputConfigurationError::None; -- do { -- auto opt = m_outputConfigStore->queryConfig(toEnable, m_lidSwitchTracker->isLidClosed(), m_orientationSensor->reading(), kwinApp()->tabletModeManager()->effectiveTabletMode()); -- if (!opt) { -- return; -- } -- auto &[cfg, order, type] = *opt; -+ auto opt = m_outputConfigStore->queryConfig(outputs, m_lidSwitchTracker->isLidClosed(), m_orientationSensor->reading(), kwinApp()->tabletModeManager()->effectiveTabletMode()); -+ if (!opt) { -+ return; -+ } -+ auto &[cfg, order, type] = *opt; - -- for (const auto &output : outputs) { -- if (!toEnable.contains(output)) { -- cfg.changeSet(output)->enabled = false; -- } -- } -- for (Output *output : std::as_const(toEnable)) { -- const auto changeset = cfg.changeSet(output); -- if (output->brightnessDevice() && changeset->allowSdrSoftwareBrightness.value_or(true)) { -- changeset->allowSdrSoftwareBrightness = false; -- changeset->brightness = output->brightnessDevice()->observedBrightness(); -- } -+ assignBrightnessDevices(); -+ for (Output *output : outputs) { -+ const auto changeset = cfg.changeSet(output); -+ if (output->brightnessDevice() && changeset->allowSdrSoftwareBrightness.value_or(true)) { -+ changeset->allowSdrSoftwareBrightness = false; -+ changeset->brightness = output->brightnessDevice()->observedBrightness(); - } -+ } - -- error = applyOutputConfiguration(cfg, order); -- switch (error) { -- case OutputConfigurationError::None: -- setOutputOrder(order); -- if (type == OutputConfigurationStore::ConfigType::Generated) { -- const bool hasInternal = std::any_of(outputs.begin(), outputs.end(), [](Output *o) { -- return o->isInternal(); -- }); -- if (hasInternal && outputs.size() == 2) { -- // show the OSD with output configuration presets -- QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.kscreen.osdService"), -- QStringLiteral("/org/kde/kscreen/osdService"), -- QStringLiteral("org.kde.kscreen.osdService"), -- QStringLiteral("showActionSelector")); -- QDBusConnection::sessionBus().asyncCall(message); -- } -- } -- return; -- case OutputConfigurationError::Unknown: -- qCWarning(KWIN_CORE) << "Applying output config failed!"; -- setFallbackOutputOrder(); -- return; -- case OutputConfigurationError::TooManyEnabledOutputs: -- if (alreadyHaveEnabledOutputs) { -- // just keeping the old output configuration is preferable -- break; -- } -- toEnable.removeLast(); -- break; -+ if (!applyOutputConfiguration(cfg, order)) { -+ qCWarning(KWIN_CORE) << "Applying output config failed!"; -+ setFallbackOutputOrder(); -+ return; -+ } -+ setOutputOrder(order); -+ if (type == OutputConfigurationStore::ConfigType::Generated) { -+ const bool hasInternal = std::any_of(outputs.begin(), outputs.end(), [](Output *o) { -+ return o->isInternal(); -+ }); -+ if (hasInternal && outputs.size() == 2) { -+ // show the OSD with output configuration presets -+ QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.kscreen.osdService"), -+ QStringLiteral("/org/kde/kscreen/osdService"), -+ QStringLiteral("org.kde.kscreen.osdService"), -+ QStringLiteral("showActionSelector")); -+ QDBusConnection::sessionBus().asyncCall(message); - } -- } while (error == OutputConfigurationError::TooManyEnabledOutputs && !toEnable.isEmpty()); -- -- qCCritical(KWIN_CORE, "Applying output configuration failed!"); -- setFallbackOutputOrder(); -+ } - } - - void Workspace::setupWindowConnections(Window *window) ---- a/src/workspace.h -+++ b/src/workspace.h -@@ -466,7 +466,7 @@ public: - * Apply the requested output configuration. Note that you must use this function - * instead of Platform::applyOutputChanges(). - */ -- OutputConfigurationError applyOutputConfiguration(const OutputConfiguration &config, const std::optional> &outputOrder = std::nullopt); -+ bool applyOutputConfiguration(const OutputConfiguration &config, const std::optional> &outputOrder = std::nullopt); - - public Q_SLOTS: - void performWindowOperation(KWin::Window *window, Options::WindowOperation op); --- -GitLab