[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