diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-02-17 22:06:33 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-02-17 22:06:44 +0000 |
commit | 67c9d9e9e665bb5754ffcdd5963189d73672f5a7 (patch) | |
tree | 2168cae3806c937ce1f1ce8faacdf83fe6c35df1 /src/core/aspects | |
parent | 8f9a0e499243915aca0e719fef0a5bb075542ea4 (diff) | |
parent | aa7c8a5cb1111d46289e6b370dcd5b1d3f66c80d (diff) |
Merge remote-tracking branch 5.15 into dev
Change-Id: I2777f6a40b9029ef5569a84e04f9e18a914504e7
Diffstat (limited to 'src/core/aspects')
-rw-r--r-- | src/core/aspects/qaspectengine.cpp | 4 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager.cpp | 9 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager_p.h | 2 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/core/aspects/qaspectengine.cpp b/src/core/aspects/qaspectengine.cpp index c11de2e26..d73771910 100644 --- a/src/core/aspects/qaspectengine.cpp +++ b/src/core/aspects/qaspectengine.cpp @@ -396,6 +396,10 @@ QVariant QAspectEngine::executeCommand(const QString &command) const QStringList names = d->m_aspectManager->serviceLocator()->systemInformation()->aspectNames(); return names.join(QLatin1String("\n")); } + if (command == QLatin1String("dump jobs")) { + d->m_aspectManager->dumpJobsOnNextFrame(); + return QLatin1String("Dump in next frame in working directory"); + } QStringList args = command.split(QLatin1Char(' ')); QString aspectName = args.takeFirst(); diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp index 225d7550e..28c820e27 100644 --- a/src/core/aspects/qaspectmanager.cpp +++ b/src/core/aspects/qaspectmanager.cpp @@ -128,6 +128,7 @@ QAspectManager::QAspectManager(QAspectEngine *parent) , m_simulationAnimation(nullptr) #endif , m_jobsInLastFrame(0) + , m_dumpJobs(false) { qRegisterMetaType<QSurface *>("QSurface*"); qCDebug(Aspects) << Q_FUNC_INFO; @@ -430,6 +431,11 @@ QVector<QNode *> QAspectManager::lookupNodes(const QVector<QNodeId> &ids) const return d->m_scene ? d->m_scene->lookupNodes(ids) : QVector<QNode *>{}; } +void QAspectManager::dumpJobsOnNextFrame() +{ + m_dumpJobs = true; +} + #if !QT_CONFIG(animation) /*! \internal @@ -528,7 +534,8 @@ void QAspectManager::processFrame() // For each Aspect // Ask them to launch set of jobs for the current frame // Updates matrices, bounding volumes, render bins ... - m_jobsInLastFrame = m_scheduler->scheduleAndWaitForFrameAspectJobs(t); + m_jobsInLastFrame = m_scheduler->scheduleAndWaitForFrameAspectJobs(t, m_dumpJobs); + m_dumpJobs = false; // Tell the aspect the frame is complete (except rendering) for (QAbstractAspect *aspect : qAsConst(m_aspects)) diff --git a/src/core/aspects/qaspectmanager_p.h b/src/core/aspects/qaspectmanager_p.h index e6772e095..e0aefdfde 100644 --- a/src/core/aspects/qaspectmanager_p.h +++ b/src/core/aspects/qaspectmanager_p.h @@ -116,6 +116,7 @@ public: QVector<QNode *> lookupNodes(const QVector<QNodeId> &ids) const; int jobsInLastFrame() const { return m_jobsInLastFrame; } + void dumpJobsOnNextFrame(); private: #if !QT_CONFIG(animation) @@ -140,6 +141,7 @@ private: RequestFrameAnimation *m_simulationAnimation; #endif int m_jobsInLastFrame; + bool m_dumpJobs; }; } // namespace Qt3DCore |