diff options
author | Mike Krus <mike.krus@kdab.com> | 2017-01-29 14:49:28 +0000 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-05-22 06:58:43 +0000 |
commit | 228b619197b2b6b97277effff248b160e7d0e3a7 (patch) | |
tree | fc2a0d1037b04bb43b55a0fd9cb18365320fb0bb /src/core/aspects/qabstractaspect.cpp | |
parent | ab0f38728cda3a5c819de6172febb0908c101967 (diff) |
Add support for single shot jobs
QAbstractAspect includes a list of jobs that will only be run once.
The list is added in jobsToExecute and then cleared.
Change-Id: I5849c643a06d8e4e81bbc55d610851de05087934
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/aspects/qabstractaspect.cpp')
-rw-r--r-- | src/core/aspects/qabstractaspect.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp index 710522356..d7e62db68 100644 --- a/src/core/aspects/qabstractaspect.cpp +++ b/src/core/aspects/qabstractaspect.cpp @@ -290,7 +290,15 @@ QAbstractAspectJobManager *QAbstractAspectPrivate::jobManager() const QVector<QAspectJobPtr> QAbstractAspectPrivate::jobsToExecute(qint64 time) { Q_Q(QAbstractAspect); - return q->jobsToExecute(time); + auto res = q->jobsToExecute(time); + + { + QMutexLocker lock(&m_singleShotMutex); + res << m_singleShotJobs; + m_singleShotJobs.clear(); + } + + return res; } /*! @@ -332,6 +340,13 @@ void QAbstractAspect::onEngineShutdown() { } +void QAbstractAspect::scheduleSingleShotJob(const Qt3DCore::QAspectJobPtr &job) +{ + Q_D(QAbstractAspect); + QMutexLocker lock(&d->m_singleShotMutex); + d->m_singleShotJobs.push_back(job); +} + namespace Debug { AsynchronousCommandReply::AsynchronousCommandReply(const QString &commandName, QObject *parent) |