summaryrefslogtreecommitdiffstats
path: root/src/render/backend/managers_p.h
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2020-02-13 11:51:38 +0100
committerPaul Lemire <paul.lemire@kdab.com>2020-02-13 15:59:51 +0100
commit294894610b02a2cd4682fafe139a60b2b96f3289 (patch)
tree70dc752d85d8b10df0f75be56c1fa2b5c12822c4 /src/render/backend/managers_p.h
parentd046e7cc3e362e6cb45afd5ecae464d796c21079 (diff)
Destroy FBOs when RenderTarget node is destroyed
It appears we never destroyed FBOs which lead to bugs when destroying and recreating a RenderTarget Change-Id: I99b3df95b821670aa3bbd63209ff9bcc21afbf79 Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/backend/managers_p.h')
-rw-r--r--src/render/backend/managers_p.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/render/backend/managers_p.h b/src/render/backend/managers_p.h
index 759c16f64..b2dec9cb5 100644
--- a/src/render/backend/managers_p.h
+++ b/src/render/backend/managers_p.h
@@ -282,6 +282,35 @@ class RenderTargetManager : public Qt3DCore::QResourceManager<
{
public:
RenderTargetManager() {}
+
+ // Called in AspectThread by RenderTarget node functor destroy
+ void addRenderTargetIdToCleanup(Qt3DCore::QNodeId id)
+ {
+ m_renderTargetIdsToCleanup.push_back(id);
+ }
+
+ // Called in AspectThread by RenderTarget node functor create
+ void removeRenderTargetToCleanup(Qt3DCore::QNodeId id)
+ {
+ m_renderTargetIdsToCleanup.removeAll(id);
+ }
+
+ // Called by RenderThread in updateGLResources (locked)
+ QVector<Qt3DCore::QNodeId> takeRenderTargetIdsToCleanup()
+ {
+ return std::move(m_renderTargetIdsToCleanup);
+ }
+
+#ifdef QT_BUILD_INTERNAL
+ // For unit testing purposes only
+ QVector<Qt3DCore::QNodeId> renderTargetIdsToCleanup() const
+ {
+ return m_renderTargetIdsToCleanup;
+ }
+#endif
+
+private:
+ QVector<Qt3DCore::QNodeId> m_renderTargetIdsToCleanup;
};
class RenderPassManager : public Qt3DCore::QResourceManager<