diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/aspects/qaspectmanager.cpp | 3 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager_p.h | 4 | ||||
-rw-r--r-- | src/core/qscheduler.cpp | 4 | ||||
-rw-r--r-- | src/core/qscheduler_p.h | 4 |
4 files changed, 10 insertions, 5 deletions
diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp index df90fd57c..f276d633e 100644 --- a/src/core/aspects/qaspectmanager.cpp +++ b/src/core/aspects/qaspectmanager.cpp @@ -110,6 +110,7 @@ QAspectManager::QAspectManager(QAspectEngine *parent) , m_simulationLoopRunning(false) , m_driveMode(QAspectEngine::Automatic) , m_postConstructorInit(nullptr) + , m_jobsInLastFrame(0) { qRegisterMetaType<QSurface *>("QSurface*"); qCDebug(Aspects) << Q_FUNC_INFO; @@ -502,7 +503,7 @@ void QAspectManager::processFrame() QElapsedTimer timer; timer.start(); #endif - m_scheduler->scheduleAndWaitForFrameAspectJobs(t); + m_jobsInLastFrame = m_scheduler->scheduleAndWaitForFrameAspectJobs(t); #if defined(QT3D_CORE_JOB_TIMING) qDebug() << "Jobs took" << timer.nsecsElapsed() / 1.0e6; #endif diff --git a/src/core/aspects/qaspectmanager_p.h b/src/core/aspects/qaspectmanager_p.h index 64c75586a..ed04b314f 100644 --- a/src/core/aspects/qaspectmanager_p.h +++ b/src/core/aspects/qaspectmanager_p.h @@ -112,6 +112,8 @@ public: QNode *lookupNode(QNodeId id) const; QVector<QNode *> lookupNodes(const QVector<QNodeId> &ids) const; + int jobsInLastFrame() const { return m_jobsInLastFrame; } + private: bool event(QEvent *event) override; void requestNextFrame(); @@ -128,7 +130,7 @@ private: QAspectEngine::RunMode m_driveMode; QVector<NodeTreeChange> m_nodeTreeChanges; NodePostConstructorInit* m_postConstructorInit; - + int m_jobsInLastFrame; }; } // namespace Qt3DCore diff --git a/src/core/qscheduler.cpp b/src/core/qscheduler.cpp index 48cdfb8df..2294976ca 100644 --- a/src/core/qscheduler.cpp +++ b/src/core/qscheduler.cpp @@ -70,7 +70,7 @@ QAspectManager *QScheduler::aspectManager() const return m_aspectManager; } -void QScheduler::scheduleAndWaitForFrameAspectJobs(qint64 time) +int QScheduler::scheduleAndWaitForFrameAspectJobs(qint64 time) { QVector<QAspectJobPtr> jobQueue; @@ -102,6 +102,8 @@ void QScheduler::scheduleAndWaitForFrameAspectJobs(qint64 time) for (QAbstractAspect *aspect : aspects) QAbstractAspectPrivate::get(aspect)->jobsDone(m_aspectManager); } + + return jobQueue.size(); } } // namespace Qt3DCore diff --git a/src/core/qscheduler_p.h b/src/core/qscheduler_p.h index 9b1685e54..dd4101ef2 100644 --- a/src/core/qscheduler_p.h +++ b/src/core/qscheduler_p.h @@ -64,13 +64,13 @@ class QScheduler : public QObject { Q_OBJECT public: - explicit QScheduler(QObject *parent = 0); + explicit QScheduler(QObject *parent = nullptr); ~QScheduler(); void setAspectManager(QAspectManager *aspectManager); QAspectManager *aspectManager() const; - virtual void scheduleAndWaitForFrameAspectJobs(qint64 time); + virtual int scheduleAndWaitForFrameAspectJobs(qint64 time); private: QAspectManager *m_aspectManager; |