diff options
Diffstat (limited to 'src/core/aspects/qabstractaspect.cpp')
-rw-r--r-- | src/core/aspects/qabstractaspect.cpp | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp index c049d3503..d7e62db68 100644 --- a/src/core/aspects/qabstractaspect.cpp +++ b/src/core/aspects/qabstractaspect.cpp @@ -38,15 +38,17 @@ ****************************************************************************/ #include "qabstractaspect.h" -#include "qentity.h" -#include <Qt3DCore/private/qaspectmanager_p.h> -#include <private/qabstractaspect_p.h> -#include <Qt3DCore/private/qaspectjobmanager_p.h> -#include <private/qchangearbiter_p.h> -#include <Qt3DCore/private/qscene_p.h> -#include <Qt3DCore/private/qnodevisitor_p.h> +#include "qabstractaspect_p.h" + +#include <Qt3DCore/qentity.h> #include <Qt3DCore/qpropertyupdatedchange.h> + #include <Qt3DCore/private/corelogging_p.h> +#include <Qt3DCore/private/qaspectjobmanager_p.h> +#include <Qt3DCore/private/qaspectmanager_p.h> +#include <Qt3DCore/private/qchangearbiter_p.h> +#include <Qt3DCore/private/qnodevisitor_p.h> +#include <Qt3DCore/private/qscene_p.h> QT_BEGIN_NAMESPACE @@ -157,6 +159,12 @@ void QAbstractAspect::registerBackendType(const QMetaObject &obj, const QBackend d->m_backendCreatorFunctors.insert(&obj, functor); } +void QAbstractAspect::unregisterBackendType(const QMetaObject &obj) +{ + Q_D(QAbstractAspect); + d->m_backendCreatorFunctors.remove(&obj); +} + void QAbstractAspectPrivate::sceneNodeAdded(QSceneChangePtr &change) { QNodeCreatedChangeBasePtr creationChange = qSharedPointerCast<QNodeCreatedChangeBase>(change); @@ -282,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; } /*! @@ -324,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) |