diff options
-rw-r--r-- | src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp | 29 | ||||
-rw-r--r-- | src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h | 3 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp b/src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp index 79a115525..ed0854ecf 100644 --- a/src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp +++ b/src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp @@ -54,9 +54,36 @@ namespace { int renderViewInstanceCounter = 0; } // anonymous +class RenderViewCommandUpdaterJobPrivate : public Qt3DCore::QAspectJobPrivate +{ +public: + RenderViewCommandUpdaterJobPrivate(RenderViewCommandUpdaterJob *q) : q_ptr(q) { } + ~RenderViewCommandUpdaterJobPrivate() override = default; + + bool isRequired() override; + void postFrame(Qt3DCore::QAspectManager *manager) override; + + RenderViewCommandUpdaterJob *q_ptr; + Q_DECLARE_PUBLIC(RenderViewCommandUpdaterJob) +}; + +bool RenderViewCommandUpdaterJobPrivate::isRequired() +{ + Q_Q(RenderViewCommandUpdaterJob); + + return q->m_renderView && !q->m_renderView->noDraw() && q->m_count > 0; +} + +void RenderViewCommandUpdaterJobPrivate::postFrame(Qt3DCore::QAspectManager *manager) +{ + Q_UNUSED(manager) + + // reset to 0 after every frame, stops the number growing indefinitely + renderViewInstanceCounter = 0; +} RenderViewCommandUpdaterJob::RenderViewCommandUpdaterJob() - : Qt3DCore::QAspectJob() + : Qt3DCore::QAspectJob(*new RenderViewCommandUpdaterJobPrivate(this)) , m_offset(0) , m_count(0) , m_renderView(nullptr) diff --git a/src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h b/src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h index 2fe5749ad..bb1975c82 100644 --- a/src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h +++ b/src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob_p.h @@ -65,6 +65,7 @@ namespace OpenGL { class RenderView; class Renderer; +class RenderViewCommandUpdaterJobPrivate; class Q_AUTOTEST_EXPORT RenderViewCommandUpdaterJob : public Qt3DCore::QAspectJob { @@ -92,6 +93,8 @@ private: Renderer *m_renderer; EntityRenderCommandDataPtr m_renderables; QVector<RenderCommand> m_commands; + + Q_DECLARE_PRIVATE(RenderViewCommandUpdaterJob) }; typedef QSharedPointer<RenderViewCommandUpdaterJob> RenderViewCommandUpdaterJobPtr; |