[neon/kde/plasma-discover/Neon/unstable] debian/patches: Revert "backport from master branch to stop updates never finishng"

Carlos De Maine null at kde.org
Mon Jun 22 23:10:51 BST 2026


Git commit a702a7dfb129b4955ce11822b7b46f4032a3eec5 by Carlos De Maine.
Committed on 22/06/2026 at 22:10.
Pushed by carlosdem into branch 'Neon/unstable'.

Revert "backport from master branch to stop updates never finishng"

This reverts commit f5e96c77ee6e2df707e6dc72f660ab28262f75f5.

D  +0    -188  debian/patches/b71c614b4d26d91d3bb00452faf14830bf31765b.diff
D  +0    -137  debian/patches/bd8dca6b797b64bc319a7ae2c1854b5e4f4069bb.diff
D  +0    -146  debian/patches/d4415b20f24cf0a181d6e3a7316dc200fbe1ce78.diff
M  +0    -3    debian/patches/series

https://invent.kde.org/neon/kde/plasma-discover/-/commit/a702a7dfb129b4955ce11822b7b46f4032a3eec5

diff --git a/debian/patches/b71c614b4d26d91d3bb00452faf14830bf31765b.diff b/debian/patches/b71c614b4d26d91d3bb00452faf14830bf31765b.diff
deleted file mode 100644
index 9901ba0..0000000
--- a/debian/patches/b71c614b4d26d91d3bb00452faf14830bf31765b.diff
+++ /dev/null
@@ -1,188 +0,0 @@
-commit b71c614b4d26d91d3bb00452faf14830bf31765b
-Author: Aleix Pol <aleixpol at kde.org>
-Date:   Fri Apr 17 18:08:30 2026 +0200
-
-    rebase on master
-
-diff --git a/libdiscover/EmitWhenChanged.h b/libdiscover/EmitWhenChanged.h
-new file mode 100644
-index 000000000..c4237ffe8
---- /dev/null
-+++ b/libdiscover/EmitWhenChanged.h
-@@ -0,0 +1,35 @@
-+/*
-+ *   SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol at kde.org>
-+ *
-+ *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-+ */
-+
-+#pragma once
-+
-+#include <QObject>
-+#include <functional>
-+
-+template<typename T>
-+class EmitWhenChanged : public QObject
-+{
-+public:
-+    EmitWhenChanged(T initial, const std::function<T()> &get, const std::function<void(T)> &emitChanged)
-+        : m_get(get)
-+        , m_emitChanged(emitChanged)
-+        , m_value(initial)
-+    {
-+    }
-+
-+    void reevaluate()
-+    {
-+        const T newValue = m_get();
-+        if (newValue != m_value) {
-+            m_value = newValue;
-+            m_emitChanged(m_value);
-+        }
-+    }
-+
-+    std::function<T()> const m_get;
-+    std::function<void(T)> const m_emitChanged;
-+    T m_value;
-+};
-diff --git a/libdiscover/resources/ResourcesModel.cpp b/libdiscover/resources/ResourcesModel.cpp
-index e96bddd7d..543e7e41b 100644
---- a/libdiscover/resources/ResourcesModel.cpp
-+++ b/libdiscover/resources/ResourcesModel.cpp
-@@ -153,12 +153,8 @@ bool ResourcesModel::addResourcesBackend(AbstractResourcesBackend *backend)
-     connect(backend, &AbstractResourcesBackend::contentsChanged, this, &ResourcesModel::callerContentsChanged);
-     connect(backend, &AbstractResourcesBackend::allDataChanged, this, &ResourcesModel::updateCaller);
-     connect(backend, &AbstractResourcesBackend::resourcesChanged, this, &ResourcesModel::resourceDataChanged);
--    connect(backend, &AbstractResourcesBackend::updatesCountChanged, this, [this] {
--        m_updatesCount.reevaluate();
--    });
--    connect(backend, &AbstractResourcesBackend::fetchingUpdatesProgressChanged, this, [this] {
--        m_fetchingUpdatesProgress.reevaluate();
--    });
-+    connect(backend, &AbstractResourcesBackend::updatesCountChanged, &m_updatesCount, &EmitWhenChanged<int>::reevaluate);
-+    connect(backend, &AbstractResourcesBackend::fetchingUpdatesProgressChanged, &m_fetchingUpdatesProgress, &EmitWhenChanged<int>::reevaluate);
-     connect(backend, &AbstractResourcesBackend::resourceRemoved, this, &ResourcesModel::resourceRemoved);
-     connect(backend, &AbstractResourcesBackend::passiveMessage, this, &ResourcesModel::passiveMessage);
-     connect(backend, &AbstractResourcesBackend::inlineMessageChanged, this, &ResourcesModel::setInlineMessage);
-diff --git a/libdiscover/resources/ResourcesModel.h b/libdiscover/resources/ResourcesModel.h
-index 9341b8b3a..0958b6425 100644
---- a/libdiscover/resources/ResourcesModel.h
-+++ b/libdiscover/resources/ResourcesModel.h
-@@ -6,6 +6,7 @@
- 
- #pragma once
- 
-+#include "EmitWhenChanged.h"
- #include <QSet>
- #include <QTimer>
- #include <QVector>
-@@ -42,31 +43,6 @@ private:
-     QTimer m_delayedEmission;
- };
- 
--template<typename T>
--class EmitWhenChanged
--{
--public:
--    EmitWhenChanged(T initial, const std::function<T()> &get, const std::function<void(T)> &emitChanged)
--        : m_get(get)
--        , m_emitChanged(emitChanged)
--        , m_value(initial)
--    {
--    }
--
--    void reevaluate()
--    {
--        auto newValue = m_get();
--        if (newValue != m_value) {
--            m_value = newValue;
--            m_emitChanged(m_value);
--        }
--    }
--
--    std::function<T()> const m_get;
--    std::function<void(T)> const m_emitChanged;
--    T m_value;
--};
--
- class DISCOVERCOMMON_EXPORT ResourcesModel : public QObject
- {
-     Q_OBJECT
-diff --git a/libdiscover/resources/StandardBackendUpdater.cpp b/libdiscover/resources/StandardBackendUpdater.cpp
-index 54f786ab1..a1fbfdf4d 100644
---- a/libdiscover/resources/StandardBackendUpdater.cpp
-+++ b/libdiscover/resources/StandardBackendUpdater.cpp
-@@ -20,11 +20,20 @@ StandardBackendUpdater::StandardBackendUpdater(AbstractResourcesBackend *parent)
-     , m_backend(parent)
-     , m_progress(0)
-     , m_lastUpdate(QDateTime())
-+    , m_isFetchingUpdates(
-+          false,
-+          [this] {
-+              return m_backend->fetchingUpdatesProgress() != 100 || m_settingUp;
-+          },
-+          [this](bool) {
-+              Q_EMIT fetchingChanged();
-+          })
- {
-+    setObjectName(parent->displayName());
-     connect(m_backend, &AbstractResourcesBackend::contentsChanged, this, &StandardBackendUpdater::refreshUpdateable);
-     connect(m_backend, &AbstractResourcesBackend::invalidated, this, &StandardBackendUpdater::refreshUpdateable);
-     connect(m_backend, &AbstractResourcesBackend::resourcesChanged, this, &StandardBackendUpdater::resourcesChanged);
--    connect(m_backend, &AbstractResourcesBackend::fetchingUpdatesProgressChanged, this, &StandardBackendUpdater::fetchingChanged);
-+    connect(m_backend, &AbstractResourcesBackend::fetchingUpdatesProgressChanged, &m_isFetchingUpdates, &EmitWhenChanged<bool>::reevaluate);
-     connect(m_backend, &AbstractResourcesBackend::resourceRemoved, this, [this](AbstractResource *resource) {
-         if (m_upgradeable.remove(resource)) {
-             Q_EMIT updatesCountChanged(updatesCount());
-@@ -125,7 +134,7 @@ AbstractBackendUpdater::State toUpdateState(Transaction *t)
- 
- bool StandardBackendUpdater::isFetchingUpdates() const
- {
--    return m_backend->fetchingUpdatesProgress() != 100 || m_settingUp || !m_hasBeenPopulated;
-+    return m_isFetchingUpdates.m_value;
- }
- 
- void StandardBackendUpdater::transactionProgressChanged()
-@@ -190,7 +199,7 @@ void StandardBackendUpdater::refreshUpdateable()
-     m_timer.stop();
-     setSettingUp(true);
-     Q_EMIT progressingChanged(true);
--    Q_EMIT fetchingChanged();
-+    m_isFetchingUpdates.reevaluate();
-     AbstractResourcesBackend::Filters f;
-     f.state = AbstractResource::Upgradeable;
-     m_upgradeable.clear();
-@@ -211,7 +220,7 @@ void StandardBackendUpdater::refreshUpdateable()
-         setSettingUp(false);
-         Q_EMIT updatesCountChanged(updatesCount());
-         Q_EMIT progressingChanged(false);
--        Q_EMIT fetchingChanged();
-+        m_isFetchingUpdates.reevaluate();
-     });
- }
- 
-@@ -327,4 +336,4 @@ void StandardBackendUpdater::setSettingUp(bool settingUp)
-     Q_EMIT settingUpChanged();
- }
- 
--#include "moc_StandardBackendUpdater.cpp"
-+#include "moc_StandardBackendUpdater.cpp"
-\ No newline at end of file
-diff --git a/libdiscover/resources/StandardBackendUpdater.h b/libdiscover/resources/StandardBackendUpdater.h
-index cd0c3e01c..273d156e0 100644
---- a/libdiscover/resources/StandardBackendUpdater.h
-+++ b/libdiscover/resources/StandardBackendUpdater.h
-@@ -8,6 +8,7 @@
- 
- #include "AbstractResourcesBackend.h"
- #include "discovercommon_export.h"
-+#include <EmitWhenChanged.h>
- #include <QDateTime>
- #include <QSet>
- #include <QTimer>
-@@ -75,4 +76,5 @@ private:
-     QTimer m_timer;
-     bool m_canCancel = false;
-     bool m_anyTransactionFailed = false;
-+    EmitWhenChanged<bool> m_isFetchingUpdates;
- };
diff --git a/debian/patches/bd8dca6b797b64bc319a7ae2c1854b5e4f4069bb.diff b/debian/patches/bd8dca6b797b64bc319a7ae2c1854b5e4f4069bb.diff
deleted file mode 100644
index 44f4d81..0000000
--- a/debian/patches/bd8dca6b797b64bc319a7ae2c1854b5e4f4069bb.diff
+++ /dev/null
@@ -1,137 +0,0 @@
-commit bd8dca6b797b64bc319a7ae2c1854b5e4f4069bb
-Author: Aleix Pol <aleixpol at kde.org>
-Date:   Sat May 23 17:51:27 2026 +0200
-
-    Remember to ignore invisible transactions
-    
-    They're not accounted for in the totalItems calculation originally.
-    
-    Define the visible property as immutable so that there is no need to
-    track the visibility.
-    
-    See
-    https://crash-reports.kde.org/organizations/kde/issues/401665/events/24ff29748e5a44fbb47db9ce5d471413
-    
-    (cherry picked from commit 262f5ec136b7bc0c8f1368f6598af87679b60b94)
-
-diff --git a/discover/DiscoverObject.cpp b/discover/DiscoverObject.cpp
-index 39edd0606..3b75f7fb4 100644
---- a/discover/DiscoverObject.cpp
-+++ b/discover/DiscoverObject.cpp
-@@ -458,8 +458,11 @@ public:
-         updateDescription();
-     }
- 
--    void onTransactionAdded()
-+    void onTransactionAdded(Transaction *newTransaction)
-     {
-+        if (!newTransaction->isVisible()) {
-+            return;
-+        }
-         const auto oldAmount = totalAmount(Items);
-         // Very unlikely to happen but let's be safe. We don't want to overflow.
-         Q_ASSERT(oldAmount < std::numeric_limits<qulonglong>::max());
-@@ -467,8 +470,11 @@ public:
-         setTotalAmount(Items, newAmount);
-     }
- 
--    void onTransactionRemoved()
-+    void onTransactionRemoved(Transaction *transaction)
-     {
-+        if (!transaction->isVisible()) {
-+            return;
-+        }
-         const auto oldAmount = totalAmount(Items);
-         // In an ideal world we'd not do subtractions on unsigned values as they could underflow. Unfortunately we deal
-         // with 64bit unsigned here, so doing a safe subtraction is difficult. Be assertive instead.
-diff --git a/libdiscover/Transaction/Transaction.cpp b/libdiscover/Transaction/Transaction.cpp
-index ec8c11f8c..4a603cc29 100644
---- a/libdiscover/Transaction/Transaction.cpp
-+++ b/libdiscover/Transaction/Transaction.cpp
-@@ -12,7 +12,7 @@
- #include <KLocalizedString>
- #include <resources/AbstractResource.h>
- 
--Transaction::Transaction(QObject *parent, AbstractResource *resource, Role role, const AddonList &addons)
-+Transaction::Transaction(QObject *parent, AbstractResource *resource, Role role, const AddonList &addons, bool visible)
-     : QObject(parent)
-     , m_resource(resource)
-     , m_role(role)
-@@ -20,6 +20,7 @@ Transaction::Transaction(QObject *parent, AbstractResource *resource, Role role,
-     , m_addons(addons)
-     , m_isCancellable(true)
-     , m_progress(0)
-+    , m_visible(visible)
- {
- }
- 
-@@ -112,14 +113,6 @@ bool Transaction::isVisible() const
-     return m_visible;
- }
- 
--void Transaction::setVisible(bool visible)
--{
--    if (m_visible != visible) {
--        m_visible = visible;
--        Q_EMIT visibleChanged(visible);
--    }
--}
--
- void Transaction::setDownloadSpeed(quint64 downloadSpeed)
- {
-     if (downloadSpeed != m_downloadSpeed) {
-diff --git a/libdiscover/Transaction/Transaction.h b/libdiscover/Transaction/Transaction.h
-index 549151509..be9f3cfa0 100644
---- a/libdiscover/Transaction/Transaction.h
-+++ b/libdiscover/Transaction/Transaction.h
-@@ -35,7 +35,7 @@ class DISCOVERCOMMON_EXPORT Transaction : public QObject
-     Q_PROPERTY(Status status READ status NOTIFY statusChanged)
-     Q_PROPERTY(bool isCancellable READ isCancellable NOTIFY cancellableChanged)
-     Q_PROPERTY(int progress READ progress NOTIFY progressChanged)
--    Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged)
-+    Q_PROPERTY(bool visible READ isVisible CONSTANT)
-     Q_PROPERTY(quint64 downloadSpeed READ downloadSpeed WRITE setDownloadSpeed NOTIFY downloadSpeedChanged)
-     Q_PROPERTY(QString downloadSpeedString READ downloadSpeedString NOTIFY downloadSpeedChanged)
-     Q_PROPERTY(QString remainingTimeString READ remainingTimeString NOTIFY remainingTimeChanged)
-@@ -70,7 +70,7 @@ public:
-     };
-     Q_ENUM(Role)
- 
--    Transaction(QObject *parent, AbstractResource *resource, Transaction::Role role, const AddonList &addons = {});
-+    Transaction(QObject *parent, AbstractResource *resource, Transaction::Role role, const AddonList &addons = {}, bool visible = true);
- 
-     ~Transaction() override;
- 
-@@ -136,7 +136,6 @@ public:
-     virtual QVariant icon() const;
- 
-     bool isVisible() const;
--    void setVisible(bool v);
- 
-     quint64 downloadSpeed() const
-     {
-@@ -195,8 +194,6 @@ Q_SIGNALS:
-      */
-     void distroErrorMessage(const QString &message);
- 
--    void visibleChanged(bool visible);
--
-     void downloadSpeedChanged(quint64 downloadSpeed);
- 
-     void remainingTimeChanged(uint remainingTime);
-diff --git a/libdiscover/resources/ResourcesUpdatesModel.cpp b/libdiscover/resources/ResourcesUpdatesModel.cpp
-index f83dd9347..ce6d59aa3 100644
---- a/libdiscover/resources/ResourcesUpdatesModel.cpp
-+++ b/libdiscover/resources/ResourcesUpdatesModel.cpp
-@@ -26,10 +26,9 @@ class UpdateTransaction : public Transaction
-     Q_OBJECT
- public:
-     UpdateTransaction(ResourcesUpdatesModel * /*parent*/, const QVector<AbstractBackendUpdater *> &updaters)
--        : Transaction(nullptr, nullptr, Transaction::InstallRole)
-+        : Transaction(nullptr, nullptr, Transaction::InstallRole, {}, false /*not visible*/)
-         , m_allUpdaters(updaters)
-     {
--        setVisible(false);
-         bool cancelable = false;
-         for (auto updater : std::as_const(m_allUpdaters)) {
-             connect(updater, &AbstractBackendUpdater::progressingChanged, this, &UpdateTransaction::slotProgressingChanged);
diff --git a/debian/patches/d4415b20f24cf0a181d6e3a7316dc200fbe1ce78.diff b/debian/patches/d4415b20f24cf0a181d6e3a7316dc200fbe1ce78.diff
deleted file mode 100644
index 43491a7..0000000
--- a/debian/patches/d4415b20f24cf0a181d6e3a7316dc200fbe1ce78.diff
+++ /dev/null
@@ -1,146 +0,0 @@
-commit d4415b20f24cf0a181d6e3a7316dc200fbe1ce78
-Author: Aleix Pol <aleixpol at kde.org>
-Date:   Sun Dec 14 02:04:23 2025 +0100
-
-    Add sorting to the progress view
-    
-    Makes sure that the transaction that is active at any given time is
-    listed on top and easily reachable to the user.
-    This is especially important since we removed the global entry on top of
-    the whole update. Flatpak will take all of the things that need updating
-    and update them at its own pace, so we better make it easy to the user
-    when there's a bunch.
-    
-    Also adds some code to test in the dummy backend.
-    
-    (cherry picked from commit b298938a319db2ea0eb1cc382930f50f17dbc5eb)
-
-diff --git a/discover/qml/ProgressView.qml b/discover/qml/ProgressView.qml
-index 8d1eb989c..d28574c2e 100644
---- a/discover/qml/ProgressView.qml
-+++ b/discover/qml/ProgressView.qml
-@@ -1,3 +1,11 @@
-+/*
-+ *   SPDX-FileCopyrightText: 2012-2025 Aleix Pol Gonzalez <aleixpol at kde.org>
-+ *   SPDX-FileCopyrightText: 2022 Nate Graham <nate at kde.org>
-+ *   SPDX-FileCopyrightText: 2023 ivan tkachenko <me at ratijas.tk>
-+ *
-+ *   SPDX-License-Identifier: LGPL-2.0-or-later
-+ */
-+
- pragma ComponentBehavior: Bound
- 
- import QtQuick
-@@ -63,6 +71,8 @@ QQC2.ToolButton {
-                 }
-                 model: KItemModels.KSortFilterProxyModel {
-                     sourceModel: Discover.TransactionModel
-+                    sortRoleName: "status"
-+                    sortOrder: Qt.DescendingOrder
-                     filterRoleName: "visible"
-                     filterRowCallback: (sourceRow, sourceParent) => {
-                         const index = sourceModel.index(sourceRow, 0, sourceParent);
-diff --git a/libdiscover/backends/DummyBackend/DummyTransaction.cpp b/libdiscover/backends/DummyBackend/DummyTransaction.cpp
-index ae56ecd06..b45396b57 100644
---- a/libdiscover/backends/DummyBackend/DummyTransaction.cpp
-+++ b/libdiscover/backends/DummyBackend/DummyTransaction.cpp
-@@ -13,6 +13,9 @@
- 
- // #define TEST_PROCEED
- 
-+static int m_concurrentTransactions = 0;
-+constexpr int MAX_CONCURRENT_TRANSACTIONS = 2;
-+
- DummyTransaction::DummyTransaction(DummyResource *app, Role role)
-     : DummyTransaction(app, {}, role)
- {
-@@ -23,9 +26,21 @@ DummyTransaction::DummyTransaction(DummyResource *app, const AddonList &addons,
-     , m_app(app)
- {
-     setCancellable(true);
--    setStatus(DownloadingStatus);
- 
--    iterateTransaction();
-+    considerStarting();
-+}
-+
-+void DummyTransaction::considerStarting()
-+{
-+    // We can limit the concurrent jobs. Added to test the ProgressView with mixed statuses
-+    if (m_concurrentTransactions < MAX_CONCURRENT_TRANSACTIONS) {
-+        disconnect(OverseeTransactions::self(), &OverseeTransactions::transactionFinished, this, &DummyTransaction::considerStarting);
-+        m_concurrentTransactions++;
-+        iterateTransaction();
-+    } else {
-+        connect(OverseeTransactions::self(), &OverseeTransactions::transactionFinished, this, &DummyTransaction::considerStarting);
-+        setStatus(QueuedStatus);
-+    }
- }
- 
- void DummyTransaction::iterateTransaction()
-@@ -34,11 +49,12 @@ void DummyTransaction::iterateTransaction()
-         return;
- 
-     if (progress() < 100) {
-+        setStatus(DownloadingStatus);
-         setProgress(qBound(0, progress() + QRandomGenerator::global()->bounded(5), 100));
--        QTimer::singleShot(/*KRandom::random()%*/ 10, this, &DummyTransaction::iterateTransaction);
-+        QTimer::singleShot(/*KRandom::random()%*/ 100, this, &DummyTransaction::iterateTransaction);
-     } else if (status() == DownloadingStatus) {
-         setStatus(CommittingStatus);
--        QTimer::singleShot(/*KRandom::random()%*/ 10, this, &DummyTransaction::iterateTransaction);
-+        QTimer::singleShot(/*KRandom::random()%*/ 100, this, &DummyTransaction::iterateTransaction);
- #ifdef TEST_PROCEED
-     } else if (resource()->name() == "Dummy 101") {
-         Q_EMIT proceedRequest(QStringLiteral("yadda yadda"),
-@@ -60,10 +76,14 @@ void DummyTransaction::cancel()
-     m_iterate = false;
- 
-     setStatus(CancelledStatus);
-+    m_concurrentTransactions--;
-+    Q_EMIT OverseeTransactions::self()->transactionFinished();
- }
- 
- void DummyTransaction::finishTransaction()
- {
-+    m_concurrentTransactions--;
-+    Q_EMIT OverseeTransactions::self()->transactionFinished();
-     AbstractResource::State newState = AbstractResource::State::Broken;
-     switch (role()) {
-     case InstallRole:
-diff --git a/libdiscover/backends/DummyBackend/DummyTransaction.h b/libdiscover/backends/DummyBackend/DummyTransaction.h
-index 4e57af0df..2befe119c 100644
---- a/libdiscover/backends/DummyBackend/DummyTransaction.h
-+++ b/libdiscover/backends/DummyBackend/DummyTransaction.h
-@@ -9,6 +9,23 @@
- #include <Transaction/Transaction.h>
- 
- class DummyResource;
-+
-+class OverseeTransactions : public QObject
-+{
-+    Q_OBJECT
-+public:
-+    static OverseeTransactions *self()
-+    {
-+        static OverseeTransactions *m_self = nullptr;
-+        if (!m_self) {
-+            m_self = new OverseeTransactions;
-+        }
-+        return m_self;
-+    }
-+Q_SIGNALS:
-+    void transactionFinished();
-+};
-+
- class DummyTransaction : public Transaction
- {
-     Q_OBJECT
-@@ -24,6 +41,7 @@ private Q_SLOTS:
-     void finishTransaction();
- 
- private:
-+    void considerStarting();
-     bool m_iterate = true;
-     DummyResource *m_app;
- };
diff --git a/debian/patches/series b/debian/patches/series
index 42c1e3c..c7a30ef 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1 @@
 snapd-qt6.diff
-bd8dca6b797b64bc319a7ae2c1854b5e4f4069bb.diff
-d4415b20f24cf0a181d6e3a7316dc200fbe1ce78.diff
-b71c614b4d26d91d3bb00452faf14830bf31765b.diff


More information about the Neon-commits mailing list