summaryrefslogtreecommitdiffstats
path: root/src/core/aspects/qabstractaspect.cpp
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2017-01-29 14:49:28 +0000
committerSean Harmer <sean.harmer@kdab.com>2017-05-22 06:58:43 +0000
commit228b619197b2b6b97277effff248b160e7d0e3a7 (patch)
treefc2a0d1037b04bb43b55a0fd9cb18365320fb0bb /src/core/aspects/qabstractaspect.cpp
parentab0f38728cda3a5c819de6172febb0908c101967 (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.cpp17
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)