tst_QMimeDatabase: use QFutureSynchronizer
authorMarc Mutz <marc.mutz@kdab.com>
Wed, 11 Jul 2012 08:41:59 +0000 (10:41 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 12 Jul 2012 23:51:33 +0000 (01:51 +0200)
Replace a list of QFuture<void>s and a loop that calls waitForFinished()
on each of them with a QFutureSynchronizer<void>, which does exactly that.

Change-Id: I1f2e90169a5b2949bd8cb9d1009a5a7af1500139
Reviewed-by: David Faure <faure@kde.org>
tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp

index d00de78..88fd251 100644 (file)
@@ -46,8 +46,8 @@
 #include <QtCore/QFile>
 #include <QtCore/QFileInfo>
 #include <QtCore/QTextStream>
+#include <QFutureSynchronizer>
 #include <QtConcurrent/QtConcurrentRun>
-#include <QtConcurrent/QFuture>
 
 #include <QtTest/QtTest>
 
@@ -752,17 +752,16 @@ void tst_QMimeDatabase::fromThreads()
 {
     QThreadPool::globalInstance()->setMaxThreadCount(20);
     // Note that data-based tests cannot be used here (QTest::fetchData asserts).
-    QList<QFuture<void> > futures;
-    futures << QtConcurrent::run(this, &tst_QMimeDatabase::mimeTypeForName);
-    futures << QtConcurrent::run(this, &tst_QMimeDatabase::aliases);
-    futures << QtConcurrent::run(this, &tst_QMimeDatabase::allMimeTypes);
-    futures << QtConcurrent::run(this, &tst_QMimeDatabase::icons);
-    futures << QtConcurrent::run(this, &tst_QMimeDatabase::inheritance);
-    futures << QtConcurrent::run(this, &tst_QMimeDatabase::knownSuffix);
-    futures << QtConcurrent::run(this, &tst_QMimeDatabase::mimeTypeForFileWithContent);
-    futures << QtConcurrent::run(this, &tst_QMimeDatabase::allMimeTypes); // a second time
-    Q_FOREACH (QFuture<void> f, futures)
-        f.waitForFinished();
+    QFutureSynchronizer<void> sync;
+    sync.addFuture(QtConcurrent::run(this, &tst_QMimeDatabase::mimeTypeForName));
+    sync.addFuture(QtConcurrent::run(this, &tst_QMimeDatabase::aliases));
+    sync.addFuture(QtConcurrent::run(this, &tst_QMimeDatabase::allMimeTypes));
+    sync.addFuture(QtConcurrent::run(this, &tst_QMimeDatabase::icons));
+    sync.addFuture(QtConcurrent::run(this, &tst_QMimeDatabase::inheritance));
+    sync.addFuture(QtConcurrent::run(this, &tst_QMimeDatabase::knownSuffix));
+    sync.addFuture(QtConcurrent::run(this, &tst_QMimeDatabase::mimeTypeForFileWithContent));
+    sync.addFuture(QtConcurrent::run(this, &tst_QMimeDatabase::allMimeTypes)); // a second time
+    // sync dtor blocks waiting for finished
 }
 
 static bool runUpdateMimeDatabase(const QString &path) // TODO make it a QMimeDatabase method?