summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestcase.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2019-09-20 09:32:25 +0200
committerMarc Mutz <marc.mutz@kdab.com>2019-09-27 07:04:42 +0000
commite24c387413b9707622060f381b2a007aa5c814a0 (patch)
tree40f6459f1ed345791672d11b904d258c429cc3a4 /src/testlib/qtestcase.cpp
parentefb9f2e1e46f6b90a32dbfe009a1dba21f411edc (diff)
Short live QtPrivate::{condition_variable,mutex}!
This is a temporary measure to work around an implementation bug on Integrity: For all other platforms, QtPrivate::condition_variable is just std::condition_variable. On Integrity, it's a class that wraps QWaitCondition to provide the interface of std::condition_variable. This allows the use of std::condition_variable across Qt without running into the Integrity issue. Once we can depend on an more modern Integrity toolchain, removing QtPrivate::condition_variable is a simple mechanical change: s/QtPrivate::condition_variable/std::condition_variable/g; s/QtPrivate::mutex/std::mutex/g; Task-number: QTBUG-78450 Change-Id: I293a99d1cdc48691817b926aa51ecd84556e5e90 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/testlib/qtestcase.cpp')
-rw-r--r--src/testlib/qtestcase.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index e29897abee..5c87844fcd 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -59,6 +59,7 @@
#include <QtCore/qtemporarydir.h>
#include <QtCore/qthread.h>
#include <QtCore/private/qlocking_p.h>
+#include <QtCore/private/qwaitcondition_p.h>
#include <QtCore/qtestsupport_core.h>
@@ -1017,15 +1018,15 @@ class WatchDog : public QThread
ThreadEnd,
};
- bool waitFor(std::unique_lock<std::mutex> &m, Expectation e) {
- auto expectation = [this, e] { return expecting != e; };
+ bool waitFor(std::unique_lock<QtPrivate::mutex> &m, Expectation e) {
+ auto expectationChanged = [this, e] { return expecting != e; };
switch (e) {
case TestFunctionEnd:
- return waitCondition.wait_for(m, defaultTimeout(), expectation);
+ return waitCondition.wait_for(m, defaultTimeout(), expectationChanged);
case ThreadStart:
case ThreadEnd:
case TestFunctionStart:
- waitCondition.wait(m, expectation);
+ waitCondition.wait(m, expectationChanged);
return true;
}
Q_UNREACHABLE();
@@ -1035,7 +1036,7 @@ class WatchDog : public QThread
public:
WatchDog()
{
- std::unique_lock<std::mutex> locker(mutex);
+ auto locker = qt_unique_lock(mutex);
expecting = ThreadStart;
start();
waitFor(locker, ThreadStart);
@@ -1062,7 +1063,7 @@ public:
}
void run() override {
- std::unique_lock<std::mutex> locker(mutex);
+ auto locker = qt_unique_lock(mutex);
expecting = TestFunctionStart;
waitCondition.notify_all();
while (true) {
@@ -1082,8 +1083,8 @@ public:
}
private:
- std::mutex mutex;
- std::condition_variable waitCondition;
+ QtPrivate::mutex mutex;
+ QtPrivate::condition_variable waitCondition;
Expectation expecting;
};