[Pkg-owncloud-commits] [owncloud-client] 44/115: SyncEngine & UI: Move QElapsedTimer to object

Sandro Knauß hefee-guest at moszumanska.debian.org
Fri Aug 29 22:03:58 UTC 2014


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit 88072a985a01ed3841aeb4394d641b1d28bc33dd
Author: Markus Goetz <markus at woboq.com>
Date:   Fri Aug 15 16:20:43 2014 +0200

    SyncEngine & UI: Move QElapsedTimer to object
    
    Using a function static is too dangerous when multiple threads are involved.
---
 src/mirall/syncengine.cpp | 16 +++++++++-------
 src/mirall/syncengine.h   |  4 +++-
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/mirall/syncengine.cpp b/src/mirall/syncengine.cpp
index 544b37a..4c5ad4d 100644
--- a/src/mirall/syncengine.cpp
+++ b/src/mirall/syncengine.cpp
@@ -457,15 +457,17 @@ void UpdateJob::update_job_update_callback (bool local,
                                     const char *dirUrl,
                                     void *userdata)
 {
-    // Don't wanna overload the UI
-    static QElapsedTimer throttleTimer;
-    if (throttleTimer.elapsed() < 200) {
-        return;
-    }
-    throttleTimer.restart();
-
     UpdateJob *updateJob = static_cast<Mirall::UpdateJob*>(userdata);
     if (updateJob) {
+        // Don't wanna overload the UI
+        if (!updateJob->lastUpdateProgressCallbackCall.isValid()) {
+            updateJob->lastUpdateProgressCallbackCall.restart(); // first call
+        } else if (updateJob->lastUpdateProgressCallbackCall.elapsed() < 200) {
+            return;
+        } else {
+            updateJob->lastUpdateProgressCallbackCall.restart();
+        }
+
         QString path = QString::fromUtf8(dirUrl).section('/', -1);
         emit updateJob->folderDiscovered(local, path);
     }
diff --git a/src/mirall/syncengine.h b/src/mirall/syncengine.h
index e31a920..88a5638 100644
--- a/src/mirall/syncengine.h
+++ b/src/mirall/syncengine.h
@@ -23,7 +23,7 @@
 #include <QString>
 #include <QSet>
 #include <QMap>
-#include <qelapsedtimer.h>
+#include <QElapsedTimer>
 
 #include <csync.h>
 
@@ -153,12 +153,14 @@ class UpdateJob : public QObject {
     csync_log_callback _log_callback;
     int _log_level;
     void* _log_userdata;
+    QElapsedTimer lastUpdateProgressCallbackCall;
     Q_INVOKABLE void start() {
         csync_set_log_callback(_log_callback);
         csync_set_log_level(_log_level);
         csync_set_log_userdata(_log_userdata);
         _csync_ctx->callbacks.update_callback = update_job_update_callback;
         _csync_ctx->callbacks.update_callback_userdata = this;
+        lastUpdateProgressCallbackCall.invalidate();
         emit finished(csync_update(_csync_ctx));
         deleteLater();
     }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list