AccountSettings: Update progress only twice per second. #3014
authorChristian Kamm <kamm@incasoftware.de>
Fri, 27 Mar 2015 13:40:33 +0000 (14:40 +0100)
committerChristian Kamm <kamm@incasoftware.de>
Wed, 22 Apr 2015 08:45:41 +0000 (10:45 +0200)
src/gui/accountsettings.cpp
src/gui/accountsettings.h

index f46cf80b13113d4502975b270e0350b1dd37498c..a6858043ae7e59a9d5c43d9442adcaea066ca2ef 100644 (file)
@@ -119,6 +119,8 @@ AccountSettings::AccountSettings(QWidget *parent) :
     connect(folderMan, SIGNAL(folderListLoaded(Folder::Map)),
             this, SLOT(setFolderList(Folder::Map)));
     setFolderList(FolderMan::instance()->map());
+
+    _lastProgressUpdate.start();
 }
 
 void AccountSettings::slotAccountStateChanged(AccountState *newAccountState)
@@ -607,6 +609,15 @@ void AccountSettings::slotSetProgress(const QString& folder, const Progress::Inf
         return;
     }
 
+    // Don't update progess too often.
+    const int msBetweenProgressUpdates = 500;
+    if (_lastProgressUpdate.elapsed() < msBetweenProgressUpdates) {
+        qDebug() << "skip progress";
+        return;
+    }
+    _lastProgressUpdate.restart();
+
+
     if(!progress._lastCompletedItem.isEmpty()
             && Progress::isWarningKind(progress._lastCompletedItem._status)) {
         int warnCount = item->data(FolderStatusDelegate::WarningCount).toInt();
index 94110a9bc6268a2fb51561f6011e383cf6f0485a..46b6fd9ba106757f843f6b58f28a8cf0dff5261e 100644 (file)
@@ -98,6 +98,7 @@ private:
     QStringList _generalErrors;
     bool _wasDisabledBefore;
     AccountState *_accountState;
+    QElapsedTimer _lastProgressUpdate;
 private slots:
     void slotFolderSyncStateChange();
     void slotAccountStateChanged(AccountState*);