summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Goffart <olivier.goffart@nokia.com>2010-08-24 07:45:56 (GMT)
committerOlivier Goffart <olivier.goffart@nokia.com>2010-08-24 07:45:56 (GMT)
commitbbc8536f6e1fb31d1b4f652750f76b4a26e1d54a (patch)
treecdc858c58b54af4a9ed3359c14210d1e349e1657
parent5798c7ac96b02a2ceed3facbc0f28a62804fbb9e (diff)
downloadQt-bbc8536f6e1fb31d1b4f652750f76b4a26e1d54a.zip
Qt-bbc8536f6e1fb31d1b4f652750f76b4a26e1d54a.tar.gz
Qt-bbc8536f6e1fb31d1b4f652750f76b4a26e1d54a.tar.bz2
Stabilize tst_QFutureWatcher::warnRace
-rw-r--r--tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp14
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