From 56ccfa23f91ac773c9a59f6ed47a62c4d217fab0 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 8 Apr 2015 09:59:00 +0200 Subject: Wait for all queues to drain in processAllMessages. --- dummyresource/resourcefactory.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/dummyresource/resourcefactory.cpp b/dummyresource/resourcefactory.cpp index 84c1abe..869ddbf 100644 --- a/dummyresource/resourcefactory.cpp +++ b/dummyresource/resourcefactory.cpp @@ -384,16 +384,22 @@ Async::Job DummyResource::synchronizeWithSource(Akonadi2::Pipeline *pipeli Async::Job DummyResource::processAllMessages() { + //We have to wait for all items to be processed to ensure the synced items are available when a query gets executed. + //TODO: report errors while processing sync? + //TODO JOBAPI: A helper that waits for n events and then continues? return Async::start([this](Async::Future &f) { - //We have to wait for all items to be processed to ensure the synced items are available when a query gets executed. - //TODO: report errors while processing sync? - //TODO: also check user-queue? if (mSynchronizerQueue.isEmpty()) { - qDebug() << "synchronizer queue is empty"; f.setFinished(); } else { QObject::connect(&mSynchronizerQueue, &MessageQueue::drained, [&f]() { - qDebug() << "synchronizer queue drained"; + f.setFinished(); + }); + } + }).then([this](Async::Future &f) { + if (mUserQueue.isEmpty()) { + f.setFinished(); + } else { + QObject::connect(&mUserQueue, &MessageQueue::drained, [&f]() { f.setFinished(); }); } -- cgit v1.2.3