commit: 0c09ada8cd1de38b5103a979d0ad154f3135917e Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Wed Feb 26 08:54:53 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> 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 <sam <AT> 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?= - <[email protected]> -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 <[email protected]> -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<DrmOutput *> toBeEnabled; - QList<DrmOutput *> 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<DrmConnector *> 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<QPainterBackend> OutputBackend::createQPainterBackend() - return nullptr; - } - --OutputConfigurationError OutputBackend::applyOutputChanges(const OutputConfiguration &config) -+bool OutputBackend::applyOutputChanges(const OutputConfiguration &config) - { - const auto availableOutputs = outputs(); - QList<Output *> 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<QList<Output *>> &outputOrder) -+bool Workspace::applyOutputConfiguration(const OutputConfiguration &config, const std::optional<QList<Output *>> &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<Output *> 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<QList<Output *>> &outputOrder = std::nullopt); -+ bool applyOutputConfiguration(const OutputConfiguration &config, const std::optional<QList<Output *>> &outputOrder = std::nullopt); - - public Q_SLOTS: - void performWindowOperation(KWin::Window *window, Options::WindowOperation op); --- -GitLab
