diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-09-20 09:32:25 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-09-27 07:04:42 +0000 |
commit | e24c387413b9707622060f381b2a007aa5c814a0 (patch) | |
tree | 40f6459f1ed345791672d11b904d258c429cc3a4 /src/testlib/qtestcase.cpp | |
parent | efb9f2e1e46f6b90a32dbfe009a1dba21f411edc (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.cpp | 17 |
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; }; |