Merge integration refs/builds/qtci/dev/1616415197

This commit is contained in:
Qt CI Bot 2021-03-22 16:45:12 +00:00
commit f5e300bf6a
2 changed files with 18 additions and 19 deletions

View File

@ -606,9 +606,7 @@ void QFutureInterfaceBase::rethrowPossibleException()
} }
QFutureInterfaceBasePrivate::QFutureInterfaceBasePrivate(QFutureInterfaceBase::State initialState) QFutureInterfaceBasePrivate::QFutureInterfaceBasePrivate(QFutureInterfaceBase::State initialState)
: refCount(1), m_progressValue(0), m_progressMinimum(0), m_progressMaximum(0), : state(initialState)
state(initialState),
manualProgress(false), m_expectedResultCount(0), runnable(nullptr), m_pool(nullptr)
{ {
progressTime.invalidate(); progressTime.invalidate();
} }

View File

@ -161,23 +161,30 @@ public:
// T: accessed from executing thread // T: accessed from executing thread
// Q: accessed from the waiting/querying thread // Q: accessed from the waiting/querying thread
RefCount refCount;
mutable QMutex m_mutex; mutable QMutex m_mutex;
QWaitCondition waitCondition; QBasicMutex continuationMutex;
QList<QFutureCallOutInterface *> outputConnections; QList<QFutureCallOutInterface *> outputConnections;
int m_progressValue; // TQ
int m_progressMinimum; // TQ
int m_progressMaximum; // TQ
QAtomicInt state; // reads and writes can happen unprotected, both must be atomic
QElapsedTimer progressTime; QElapsedTimer progressTime;
QWaitCondition waitCondition;
QWaitCondition pausedWaitCondition; QWaitCondition pausedWaitCondition;
// ### TODO: put m_results and m_exceptionStore into a union (see QTBUG-92045)
QtPrivate::ResultStoreBase m_results; QtPrivate::ResultStoreBase m_results;
bool manualProgress; // only accessed from executing thread
int m_expectedResultCount;
QtPrivate::ExceptionStore m_exceptionStore; QtPrivate::ExceptionStore m_exceptionStore;
QString m_progressText; QString m_progressText;
QRunnable *runnable; QRunnable *runnable = nullptr;
QThreadPool *m_pool; QThreadPool *m_pool = nullptr;
// Wrapper for continuation
std::function<void(const QFutureInterfaceBase &)> continuation;
RefCount refCount = 1;
QAtomicInt state; // reads and writes can happen unprotected, both must be atomic
int m_progressValue = 0; // TQ
int m_progressMinimum = 0; // TQ
int m_progressMaximum = 0; // TQ
int m_expectedResultCount = 0;
bool manualProgress = false; // only accessed from executing thread
bool launchAsync = false;
bool isValid = false;
inline QThreadPool *pool() const inline QThreadPool *pool() const
{ return m_pool ? m_pool : QThreadPool::globalInstance(); } { return m_pool ? m_pool : QThreadPool::globalInstance(); }
@ -196,12 +203,6 @@ public:
void setState(QFutureInterfaceBase::State state); void setState(QFutureInterfaceBase::State state);
// Wrapper for continuation
std::function<void(const QFutureInterfaceBase &)> continuation;
QBasicMutex continuationMutex;
bool launchAsync = false;
bool isValid = false;
}; };
QT_END_NAMESPACE QT_END_NAMESPACE