diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-15 14:01:15 +0100 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-18 15:55:29 +0000 |
commit | 38fe0e3aae7dbaacf02064defa42b8cff292703b (patch) | |
tree | 58877175060be01ad80a51f76be34a1594d5dc5d /src | |
parent | a768092904a6f294b321a3b8e603be786aabfcb5 (diff) |
Destroy allocators in aspect not the renderer
Otherwise it was creating a weird confusion of responsibility. The
aspect asked for the creation of the allocators while the renderer
itself was asking for their destruction.
Change-Id: Ib06a315b39dc654d5a9bb97d4d2153884c457443
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/render/backend/abstractrenderer_p.h | 1 | ||||
-rw-r--r-- | src/render/backend/renderer.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/renderer_p.h | 2 | ||||
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 2 |
4 files changed, 4 insertions, 3 deletions
diff --git a/src/render/backend/abstractrenderer_p.h b/src/render/backend/abstractrenderer_p.h index 3706cafa0..2e24dc819 100644 --- a/src/render/backend/abstractrenderer_p.h +++ b/src/render/backend/abstractrenderer_p.h @@ -94,6 +94,7 @@ public: virtual void initialize() = 0; virtual void shutdown() = 0; virtual void createAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager) = 0; + virtual void destroyAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager) = 0; // Threaded renderer virtual void render() = 0; diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index 3e304aee3..a05800851 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -154,8 +154,6 @@ Renderer::Renderer(QRenderAspect::RenderType type) Renderer::~Renderer() { - // Clean up the TLS allocators - destroyAllocators(QAbstractAspectPrivate::get(m_rendererAspect)->jobManager()); } NodeManagers *Renderer::nodeManagers() const diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h index e39cb46b6..eead65190 100644 --- a/src/render/backend/renderer_p.h +++ b/src/render/backend/renderer_p.h @@ -135,6 +135,7 @@ public: void initialize() Q_DECL_OVERRIDE; void shutdown() Q_DECL_OVERRIDE; void createAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager) Q_DECL_OVERRIDE; + void destroyAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager) Q_DECL_OVERRIDE; void render() Q_DECL_OVERRIDE; void doRender() Q_DECL_OVERRIDE; @@ -162,7 +163,6 @@ public: void setOpenGLContext(QOpenGLContext *context); QGraphicsApiFilter *contextInfo() const; - void destroyAllocators(Qt3DCore::QAbstractAspectJobManager *jobManager); void addAllocator(Qt3DCore::QFrameAllocator *allocator); Qt3DCore::QFrameAllocator *currentFrameAllocator(); diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index 892728e9a..337bb9747 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -443,6 +443,8 @@ void QRenderAspect::onInitialize(const QVariantMap &data) void QRenderAspect::onCleanup() { Q_D(QRenderAspect); + if (d->m_renderer) + d->m_renderer->destroyAllocators(d->jobManager()); delete d->m_renderer; d->m_renderer = Q_NULLPTR; } |