[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [muon/frameworks] libmuon/backends/PackageKitBackend: Fix PackageKit::isFetching
From:       Aleix Pol <aleixpol () kde ! org>
Date:       2014-10-01 2:03:51
Message-ID: E1XZ9Gh-0002u5-B3 () scm ! kde ! org
[Download RAW message or body]

Git commit 0bad3b9d4c39244db9d7669c648665783222f071 by Aleix Pol.
Committed on 01/10/2014 at 01:28.
Pushed by apol into branch 'frameworks'.

Fix PackageKit::isFetching

Make it possible for the PackageKitBackend to have different transactions
notify that it's fetching by using an integer in the implementation.

M  +11   -8    libmuon/backends/PackageKitBackend/PackageKitBackend.cpp
M  +2    -2    libmuon/backends/PackageKitBackend/PackageKitBackend.h

http://commits.kde.org/muon/0bad3b9d4c39244db9d7669c648665783222f071

diff --git a/libmuon/backends/PackageKitBackend/PackageKitBackend.cpp \
b/libmuon/backends/PackageKitBackend/PackageKitBackend.cpp index 9b3e4e3..cee1e99 \
                100644
--- a/libmuon/backends/PackageKitBackend/PackageKitBackend.cpp
+++ b/libmuon/backends/PackageKitBackend/PackageKitBackend.cpp
@@ -65,17 +65,21 @@ bool PackageKitBackend::isFetching() const
     return m_isFetching;
 }
 
-void PackageKitBackend::setFetching(bool f)
+void PackageKitBackend::acquireFetching(bool f)
 {
-    if (f != m_isFetching) {
-        m_isFetching = f;
+    if (f)
+        m_isFetching++;
+    else
+        m_isFetching--;
+
+    if ((!f && m_isFetching==0) || (f && m_isFetching==1)) {
         emit fetchingChanged();
     }
 }
 
 void PackageKitBackend::reloadPackageList()
 {
-    setFetching(true);
+    acquireFetching(true);
     m_updatingPackages = m_packages;
     
     if (m_refresher) {
@@ -114,11 +118,11 @@ void \
PackageKitBackend::getPackagesFinished(PackageKit::Transaction::Exit exit)  }
 
     m_packages = m_updatingPackages;
-    setFetching(false);
     QStringList ids;
     foreach(AbstractResource* res, m_updatingPackages) {
         ids += qobject_cast<PackageKitResource*>(res)->availablePackageId();
     }
+    acquireFetching(false);
 
 //  PackageKit has a maximum of packages to process called \
PK_TRANSACTION_MAX_PACKAGES_TO_PROCESS  //  which is 5200 today. To workaround that, \
we'll create different transactions that we'll process @@ -138,9 +142,7 @@ void \
PackageKitBackend::transactionError(PackageKit::Transaction::Error, const Q  
 void PackageKitBackend::queueTransactionFinished(PackageKit::Transaction::Exit exit, \
uint)  {
-//     that's a workaround to some kind of bug I don't really understand
-    if (exit == PackageKit::Transaction::ExitUnknown)
-        return;
+    acquireFetching(false);
 
     if (exit != PackageKit::Transaction::ExitSuccess) {
         qWarning() << "error while fetching details" << exit;
@@ -153,6 +155,7 @@ void PackageKitBackend::iterateTransactionQueue()
     if (m_transactionQueue.isEmpty())
         return;
 
+    acquireFetching(true);
     PackageKit::Transaction* transaction = m_transactionQueue.takeFirst()();
     connect(transaction, SIGNAL(details(PackageKit::Details)), \
                SLOT(packageDetails(PackageKit::Details)));
     connect(transaction, SIGNAL(errorCode(PackageKit::Transaction::Error,QString)), \
                SLOT(transactionError(PackageKit::Transaction::Error,QString)));
diff --git a/libmuon/backends/PackageKitBackend/PackageKitBackend.h \
b/libmuon/backends/PackageKitBackend/PackageKitBackend.h index f0c6bf4..1422cd1 \
                100644
--- a/libmuon/backends/PackageKitBackend/PackageKitBackend.h
+++ b/libmuon/backends/PackageKitBackend/PackageKitBackend.h
@@ -69,7 +69,7 @@ class MUONPRIVATE_EXPORT PackageKitBackend : public \
AbstractResourcesBackend  
     private:
         void iterateTransactionQueue();
-        void setFetching(bool f);
+        void acquireFetching(bool f);
 
         QHash<QString, AbstractResource*> m_packages;
         QHash<QString, AbstractResource*> m_updatingPackages;
@@ -78,7 +78,7 @@ class MUONPRIVATE_EXPORT PackageKitBackend : public \
AbstractResourcesBackend  PackageKitUpdater* m_updater;
         QList<PackageKitResource*> m_upgradeablePackages;
         QPointer<PackageKit::Transaction> m_refresher;
-        bool m_isFetching;
+        int m_isFetching;
         QList<std::function<PackageKit::Transaction*()>> m_transactionQueue;
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic