summaryrefslogtreecommitdiffstats
path: root/src/core/aspects
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2020-02-17 22:06:33 +0000
committerMike Krus <mike.krus@kdab.com>2020-02-17 22:06:44 +0000
commit67c9d9e9e665bb5754ffcdd5963189d73672f5a7 (patch)
tree2168cae3806c937ce1f1ce8faacdf83fe6c35df1 /src/core/aspects
parent8f9a0e499243915aca0e719fef0a5bb075542ea4 (diff)
parentaa7c8a5cb1111d46289e6b370dcd5b1d3f66c80d (diff)
Merge remote-tracking branch 5.15 into dev
Diffstat (limited to 'src/core/aspects')
-rw-r--r--src/core/aspects/qaspectengine.cpp4
-rw-r--r--src/core/aspects/qaspectmanager.cpp9
-rw-r--r--src/core/aspects/qaspectmanager_p.h2
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