From 7e97222fc6b4fb546b64767e64637b7cbb7ac959 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 1 Dec 2015 15:17:19 +0100 Subject: Pipeline: only emit a change if the revision actually changed. We had quite a bunch of superfluous notifications before (i.e. during cleanup). --- common/pipeline.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'common/pipeline.cpp') diff --git a/common/pipeline.cpp b/common/pipeline.cpp index 16d8329..acccd90 100644 --- a/common/pipeline.cpp +++ b/common/pipeline.cpp @@ -42,7 +42,8 @@ class Pipeline::Private { public: Private(const QString &resourceName) - : storage(Akonadi2::storageLocation(), resourceName, Storage::ReadWrite) + : storage(Akonadi2::storageLocation(), resourceName, Storage::ReadWrite), + revisionChanged(false) { } @@ -50,6 +51,7 @@ public: Storage::Transaction transaction; QHash > processors; QHash adaptorFactory; + bool revisionChanged; }; Pipeline::Pipeline(const QString &resourceName, QObject *parent) @@ -99,7 +101,10 @@ void Pipeline::commit() d->transaction.commit(); } d->transaction = Storage::Transaction(); - emit revisionUpdated(revision); + if (d->revisionChanged) { + d->revisionChanged = false; + emit revisionUpdated(revision); + } } Storage::Transaction &Pipeline::transaction() @@ -119,6 +124,7 @@ void Pipeline::storeNewRevision(qint64 newRevision, const flatbuffers::FlatBuffe Warning() << "Failed to write entity"; } ); + d->revisionChanged = true; Akonadi2::Storage::setMaxRevision(d->transaction, newRevision); Akonadi2::Storage::recordRevision(d->transaction, newRevision, uid, bufferType); } -- cgit v1.2.3