diff options
Diffstat (limited to 'src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp')
-rw-r--r-- | src/plugins/renderers/opengl/jobs/renderviewcommandupdaterjob.cpp | 29 |
1 files changed, 28 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) |