diff options
author | Olivier Goffart <olivier.goffart@nokia.com> | 2010-08-24 07:45:56 (GMT) |
---|---|---|
committer | Olivier Goffart <olivier.goffart@nokia.com> | 2010-08-24 07:45:56 (GMT) |
commit | bbc8536f6e1fb31d1b4f652750f76b4a26e1d54a (patch) | |
tree | cdc858c58b54af4a9ed3359c14210d1e349e1657 | |
parent | 5798c7ac96b02a2ceed3facbc0f28a62804fbb9e (diff) | |
download | Qt-bbc8536f6e1fb31d1b4f652750f76b4a26e1d54a.zip Qt-bbc8536f6e1fb31d1b4f652750f76b4a26e1d54a.tar.gz Qt-bbc8536f6e1fb31d1b4f652750f76b4a26e1d54a.tar.bz2 |
Stabilize tst_QFutureWatcher::warnRace
-rw-r--r-- | tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp b/tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp index 8b52761..183f62c 100644 --- a/tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp +++ b/tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp @@ -47,6 +47,7 @@ #include <qfuturewatcher.h> #include <qtconcurrentrun.h> #include <qtconcurrentmap.h> +#include "../../shared/util.h" #ifndef QT_NO_CONCURRENT_TEST #include <private/qfutureinterface_p.h> @@ -891,6 +892,13 @@ class DummyObject : public QObject { Q_OBJECT public slots: void dummySlot() {} +public: + static void function(QWaitCondition *cond) + { + QMutex m; + QMutexLocker lock(&m); + cond->wait(&m); + } }; void tst_QFutureWatcher::warnRace() @@ -900,14 +908,16 @@ void tst_QFutureWatcher::warnRace() #endif QFutureWatcher<void> watcher; DummyObject object; + QWaitCondition cond; - QFuture<void> future = QtConcurrent::run(sleeper); + QFuture<void> future = QtConcurrent::run(DummyObject::function, &cond); watcher.setFuture(future); + QTRY_VERIFY(future.isStarted()); connect(&watcher, SIGNAL(finished()), &object, SLOT(dummySlot())); + cond.wakeAll(); future.waitForFinished(); } - #include "tst_qfuturewatcher.moc" #else |