summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-10-16 14:50:46 +0200
committerPaul Lemire <paul.lemire@kdab.com>2014-10-17 21:16:23 +0200
commitdbe217b871e11820279d62964d8df2f16d57778c (patch)
tree20d6104255fc89836ffeb667c8c56a43d4a40596
parentfd312e42c2bc52c1dfa546b9e4393bc729aa73b9 (diff)
Separate handle definition from Manager declaration
All handles typedefs are defined in a dedicated small header file that can easily be included. Those typedefs must be used when referencing a certain type of handles to avoid errors. All raw QHandle uses or redefinitions of typedefs have been removed. Change-Id: Ia6c006ede0db3be22e58dad9b3cc104029023056 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r--src/render/backend/framegraph/framegraphnode_p.h7
-rw-r--r--src/render/backend/framegraph/renderpassfilternode_p.h5
-rw-r--r--src/render/backend/framegraph/techniquefilternode_p.h6
-rw-r--r--src/render/backend/handle_types_p.h107
-rw-r--r--src/render/backend/jobs/loadmeshdatajob.h4
-rw-r--r--src/render/backend/managers_p.h26
-rw-r--r--src/render/backend/meshdatamanager.cpp9
-rw-r--r--src/render/backend/meshdatamanager_p.h10
-rw-r--r--src/render/backend/render-backend.pri3
-rw-r--r--src/render/backend/rendercommand_p.h14
-rw-r--r--src/render/backend/rendereffect_p.h11
-rw-r--r--src/render/backend/renderentity.cpp1
-rw-r--r--src/render/backend/renderentity_p.h17
-rw-r--r--src/render/backend/renderer_p.h7
-rw-r--r--src/render/backend/rendermesh_p.h4
-rw-r--r--src/render/backend/renderview_p.h15
-rw-r--r--src/render/backend/texturedatamanager.cpp9
-rw-r--r--src/render/backend/texturedatamanager_p.h5
18 files changed, 123 insertions, 137 deletions
diff --git a/src/render/backend/framegraph/framegraphnode_p.h b/src/render/backend/framegraph/framegraphnode_p.h
index 2c69f9a71..1637fce68 100644
--- a/src/render/backend/framegraph/framegraphnode_p.h
+++ b/src/render/backend/framegraph/framegraphnode_p.h
@@ -55,15 +55,8 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
-template<typename T, int INDEXBITS>
-class QHandle;
-
namespace Render {
-class FrameGraphNode;
-
-typedef QHandle<FrameGraphNode *, 8> HFrameGraphNode;
-
class FrameGraphNode : public QBackendNode
{
public:
diff --git a/src/render/backend/framegraph/renderpassfilternode_p.h b/src/render/backend/framegraph/renderpassfilternode_p.h
index 28bed1360..530044cbd 100644
--- a/src/render/backend/framegraph/renderpassfilternode_p.h
+++ b/src/render/backend/framegraph/renderpassfilternode_p.h
@@ -57,11 +57,6 @@ class QHandle;
namespace Render {
-class Renderer;
-class RenderCriterion;
-
-typedef QHandle<RenderCriterion, 16> HCriterion;
-
class RenderPassFilter
: public Render::FrameGraphNode
{
diff --git a/src/render/backend/framegraph/techniquefilternode_p.h b/src/render/backend/framegraph/techniquefilternode_p.h
index 3da113d72..73b809c9a 100644
--- a/src/render/backend/framegraph/techniquefilternode_p.h
+++ b/src/render/backend/framegraph/techniquefilternode_p.h
@@ -61,12 +61,6 @@ class QHandle;
namespace Render {
-class Renderer;
-class RenderCriterion;
-
-typedef QHandle<RenderCriterion, 16> HCriterion;
-
-
class TechniqueFilter
: public FrameGraphNode
{
diff --git a/src/render/backend/handle_types_p.h b/src/render/backend/handle_types_p.h
new file mode 100644
index 000000000..d6f6cd367
--- /dev/null
+++ b/src/render/backend/handle_types_p.h
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QT3D_RENDER_HANDLE_TYPES_P_H
+#define QT3D_RENDER_HANDLE_TYPES_P_H
+
+#include <Qt3DRenderer/qt3drenderer_global.h>
+#include <Qt3DCore/qhandle.h>
+
+QT_BEGIN_NAMESPACE
+
+class QMatrix4x4;
+class QOpenGLVertexArrayObject;
+
+namespace Qt3D {
+
+class QMeshData;
+class TexImageData;
+
+namespace Render {
+
+class RenderAttachment;
+class RenderCameraLens;
+class RenderCriterion;
+class RenderEffect;
+class RenderEntity;
+class RenderShader;
+class FrameGraphNode;
+class RenderLayer;
+class RenderLight;
+class RenderMaterial;
+class SortCriterion;
+class RenderTechnique;
+class RenderTexture;
+class RenderTransform;
+class RenderMesh;
+class RenderTarget;
+class RenderRenderPass;
+
+typedef QHandle<RenderAttachment, 16> HAttachment;
+typedef QHandle<RenderCameraLens, 8> HCamera;
+typedef QHandle<RenderCriterion, 16> HCriterion;
+typedef QHandle<RenderEffect, 16> HEffect;
+typedef QHandle<RenderEntity, 16> HEntity;
+typedef QHandle<FrameGraphNode *, 8> HFrameGraphNode;
+typedef QHandle<RenderLayer, 16> HLayer;
+typedef QHandle<RenderLight, 16> HLight;
+typedef QHandle<RenderMaterial, 16> HMaterial;
+typedef QHandle<QMatrix4x4, 16> HMatrix;
+typedef QHandle<RenderShader, 16> HShader;
+typedef QHandle<QOpenGLVertexArrayObject*, 16> HVao;
+typedef QHandle<QMeshData, 16> HMeshData;
+typedef QHandle<RenderShader, 16> HShader;
+typedef QHandle<SortCriterion, 8> HSortCriterion;
+typedef QHandle<RenderTechnique, 16> HTechnique;
+typedef QHandle<RenderTexture, 16> HTexture;
+typedef QHandle<RenderTransform, 16> HTransform;
+typedef QHandle<RenderMesh, 16> HMesh;
+typedef QHandle<RenderTarget, 8> HTarget;
+typedef QHandle<RenderRenderPass, 16> HRenderPass;
+typedef QHandle<TexImageData, 16> HTextureData;
+
+} // Render
+
+} // Qt3D
+
+QT_END_NAMESPACE
+
+#endif // QT3D_RENDER_HANDLE_TYPES_P_H
diff --git a/src/render/backend/jobs/loadmeshdatajob.h b/src/render/backend/jobs/loadmeshdatajob.h
index e4f871a10..63dafe1ec 100644
--- a/src/render/backend/jobs/loadmeshdatajob.h
+++ b/src/render/backend/jobs/loadmeshdatajob.h
@@ -53,13 +53,9 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
-typedef QHandle<QMeshData, 16> HMeshData;
-
namespace Render {
class Renderer;
-class RenderMesh;
-typedef QHandle<RenderMesh, 16> HMesh;
class LoadMeshDataJob : public Qt3D::QJob
{
diff --git a/src/render/backend/managers_p.h b/src/render/backend/managers_p.h
index 27719c675..f8e9efa22 100644
--- a/src/render/backend/managers_p.h
+++ b/src/render/backend/managers_p.h
@@ -59,6 +59,7 @@
#include <Qt3DRenderer/private/rendertransform_p.h>
#include <Qt3DRenderer/private/rendertarget_p.h>
#include <Qt3DRenderer/private/renderrenderpass_p.h>
+#include <Qt3DRenderer/private/handle_types_p.h>
QT_BEGIN_NAMESPACE
@@ -68,31 +69,6 @@ class QMeshData;
namespace Render {
-class RenderShader;
-class FrameGraphNode;
-
-typedef QHandle<RenderAttachment, 16> HAttachment;
-typedef QHandle<RenderCameraLens, 8> HCamera;
-typedef QHandle<RenderCriterion, 16> HCriterion;
-typedef QHandle<RenderEffect, 16> HEffect;
-typedef QHandle<RenderEntity, 16> HEntity;
-typedef QHandle<FrameGraphNode *, 8> HFrameGraphNode;
-typedef QHandle<RenderLayer, 16> HLayer;
-typedef QHandle<RenderLight, 16> HLight;
-typedef QHandle<RenderMaterial, 16> HMaterial;
-typedef QHandle<QMatrix4x4, 16> HMatrix;
-typedef QHandle<RenderShader, 16> HShader;
-typedef QHandle<QOpenGLVertexArrayObject*, 16> HVao;
-typedef QHandle<QMeshData, 16> HMeshData;
-typedef QHandle<RenderShader, 16> HShader;
-typedef QHandle<SortCriterion, 8> HSortCriterion;
-typedef QHandle<RenderTechnique, 16> HTechnique;
-typedef QHandle<RenderTexture, 16> HTexture;
-typedef QHandle<RenderTransform, 16> HTransform;
-typedef QHandle<RenderMesh, 16> HMesh;
-typedef QHandle<RenderTarget, 8> HTarget;
-typedef QHandle<RenderRenderPass, 16> HRenderPass;
-
class AttachmentManager : public QResourcesManager<
RenderAttachment,
QUuid,
diff --git a/src/render/backend/meshdatamanager.cpp b/src/render/backend/meshdatamanager.cpp
index 199a8f53c..4b9266955 100644
--- a/src/render/backend/meshdatamanager.cpp
+++ b/src/render/backend/meshdatamanager.cpp
@@ -46,15 +46,6 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
namespace Render {
-MeshDataManager::MeshDataManager()
- : QResourcesManager<QMeshData,
- QUuid,
- 16,
- Qt3D::ListAllocatingPolicy,
- Qt3D::ObjectLevelLockingPolicy>()
-{
-}
-
// Called by aspect thread when RenderMesh receive a new functor in syncChanges
void MeshDataManager::addMeshData(QAbstractMeshFunctorPtr functor, const QUuid &meshUuid)
{
diff --git a/src/render/backend/meshdatamanager_p.h b/src/render/backend/meshdatamanager_p.h
index 17620cb51..9d7195bf6 100644
--- a/src/render/backend/meshdatamanager_p.h
+++ b/src/render/backend/meshdatamanager_p.h
@@ -46,6 +46,7 @@
#include <Qt3DCore/qresourcesmanager.h>
#include <Qt3DRenderer/qmeshdata.h>
#include <Qt3DRenderer/private/rendermesh_p.h>
+#include <Qt3DRenderer/private/handle_types_p.h>
#include <QHash>
#include <QPair>
@@ -57,9 +58,6 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
namespace Render {
-typedef QHandle<QMeshData, 16> HMeshData;
-typedef QHandle<RenderMesh, 16> HMesh;
-
class MeshDataManager : public QResourcesManager<QMeshData,
QUuid,
16,
@@ -67,11 +65,7 @@ class MeshDataManager : public QResourcesManager<QMeshData,
Qt3D::ObjectLevelLockingPolicy>
{
public:
- MeshDataManager();
-
- inline bool hasMeshData(const QUuid &id) { return contains(id); }
- inline QMeshData* getOrCreateMeshData(const QUuid &id) { return getOrCreateResource(id); }
- inline QMeshData* meshData(const QUuid &id) { return lookupResource(id); }
+ MeshDataManager() {}
void addMeshData(QAbstractMeshFunctorPtr functor, const QUuid &meshUuid);
QHash<QUuid, QAbstractMeshFunctorPtr> meshesPending();
diff --git a/src/render/backend/render-backend.pri b/src/render/backend/render-backend.pri
index bd4993847..e74977c6e 100644
--- a/src/render/backend/render-backend.pri
+++ b/src/render/backend/render-backend.pri
@@ -46,7 +46,8 @@ HEADERS += \
$$PWD/shadervariables_p.h \
$$PWD/qgraphicsutils_p.h \
$$PWD/rendernodefunctor_p.h \
- $$PWD/managers_p.h
+ $$PWD/managers_p.h \
+ $$PWD/handle_types_p.h
SOURCES += \
$$PWD/rendereraspect.cpp \
diff --git a/src/render/backend/rendercommand_p.h b/src/render/backend/rendercommand_p.h
index 395bc98da..1875b697a 100644
--- a/src/render/backend/rendercommand_p.h
+++ b/src/render/backend/rendercommand_p.h
@@ -46,7 +46,7 @@
#include <qglobal.h>
#include <Qt3DRenderer/private/quniformvalue_p.h>
#include <Qt3DRenderer/private/qmeshdata_p.h>
-#include <Qt3DCore/qhandle.h>
+#include <Qt3DRenderer/private/handle_types_p.h>
#include <QOpenGLShaderProgram>
#include <QOpenGLTexture>
#include <QMatrix4x4>
@@ -59,20 +59,8 @@ namespace Qt3D {
namespace Render {
-class RenderTarget;
-class RenderMaterial;
-class RenderMesh;
-class RenderShader;
-class RenderTechnique;
class RenderStateSet;
-typedef QHandle<QOpenGLVertexArrayObject*, 16> HVao;
-typedef QHandle<RenderMaterial, 16> HMaterial;
-typedef QHandle<RenderMesh, 16> HMesh;
-typedef QHandle<RenderShader, 16> HShader;
-typedef QHandle<QMeshData, 16> HMeshData;
-typedef QHandle<RenderTechnique, 16> HTechnique;
-
class RenderCommand
{
public:
diff --git a/src/render/backend/rendereffect_p.h b/src/render/backend/rendereffect_p.h
index e968d7679..2a484ac6d 100644
--- a/src/render/backend/rendereffect_p.h
+++ b/src/render/backend/rendereffect_p.h
@@ -44,7 +44,6 @@
#include <Qt3DRenderer/qt3drenderer_global.h>
#include <Qt3DRenderer/private/parameterpack_p.h>
-#include <Qt3DCore/private/qobserverinterface_p.h>
#include <Qt3DCore/qbackendnode.h>
#include <QList>
#include <QUuid>
@@ -54,19 +53,9 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
class QTechnique;
-class QEffect;
-
-template <typename T, int INDEXBITS>
-class QHandle;
namespace Render {
-class RenderTechnique;
-
-typedef QHandle<RenderTechnique, 16> HTechnique;
-
-class EffectManager;
-
class RenderEffect
: public QBackendNode
{
diff --git a/src/render/backend/renderentity.cpp b/src/render/backend/renderentity.cpp
index d6d76417e..484a1d83f 100644
--- a/src/render/backend/renderentity.cpp
+++ b/src/render/backend/renderentity.cpp
@@ -41,6 +41,7 @@
#include "renderentity_p.h"
#include <Qt3DRenderer/private/meshdatamanager_p.h>
+#include <Qt3DRenderer/private/managers_p.h>
#include <Qt3DRenderer/private/renderer_p.h>
#include <Qt3DRenderer/qabstractlight.h>
#include <Qt3DRenderer/qlayer.h>
diff --git a/src/render/backend/renderentity_p.h b/src/render/backend/renderentity_p.h
index 7dd763c0d..b7a426ca8 100644
--- a/src/render/backend/renderentity_p.h
+++ b/src/render/backend/renderentity_p.h
@@ -44,7 +44,8 @@
#define QT3D_RENDER_RENDERNODE_H
#include <Qt3DRenderer/private/renderer_p.h>
-#include <Qt3DRenderer/private/managers_p.h>
+#include <Qt3DRenderer/private/handle_types_p.h>
+#include <Qt3DCore/qbackendnode.h>
#include <Qt3DCore/qhandle.h>
#include <QVector>
#include <QUuid>
@@ -64,20 +65,6 @@ class QComponent;
namespace Render {
class Renderer;
-class EntityManager;
-class RenderLight;
-class RenderEntity;
-class RenderLayer;
-class RenderMesh;
-class RenderTransform;
-
-typedef QHandle<RenderCameraLens, 8> HCamera;
-typedef QHandle<RenderEntity, 16> HEntity;
-typedef QHandle<RenderLayer, 16> HLayer;
-typedef QHandle<RenderLight, 16> HLight;
-typedef QHandle<QMatrix4x4, 16> HMatrix;
-typedef QHandle<RenderTransform, 16> HTransform;
-typedef QHandle<RenderMesh, 16> HMesh;
class RenderEntity : public QBackendNode
{
diff --git a/src/render/backend/renderer_p.h b/src/render/backend/renderer_p.h
index 92507ff53..131e25310 100644
--- a/src/render/backend/renderer_p.h
+++ b/src/render/backend/renderer_p.h
@@ -45,8 +45,8 @@
#include <Qt3DRenderer/qtechnique.h>
#include <Qt3DRenderer/private/quniformvalue_p.h>
+#include <Qt3DRenderer/private/handle_types_p.h>
#include <Qt3DCore/qjob.h>
-#include <Qt3DCore/qhandle.h>
#include <QHash>
#include <QMatrix4x4>
@@ -123,11 +123,6 @@ class SceneManager;
class AttachmentManager;
class SortCriterionManager;
-typedef QHandle<RenderMaterial, 16> HMaterial;
-typedef QHandle<RenderEffect, 16> HEffect;
-typedef QHandle<RenderRenderPass, 16> HRenderPass;
-typedef QHandle<RenderTechnique, 16> HTechnique;
-
class Renderer
{
public:
diff --git a/src/render/backend/rendermesh_p.h b/src/render/backend/rendermesh_p.h
index 5e9f5852c..0dc60964d 100644
--- a/src/render/backend/rendermesh_p.h
+++ b/src/render/backend/rendermesh_p.h
@@ -43,8 +43,7 @@
#define QT3D_RENDER_RENDERMESH_H
#include <Qt3DCore/axisalignedboundingbox.h>
-#include <Qt3DCore/qhandle.h>
-#include <Qt3DCore/private/qobserverinterface_p.h>
+#include <Qt3DRenderer/private/handle_types_p.h>
#include <Qt3DCore/qbackendnode.h>
#include <QUuid>
@@ -60,7 +59,6 @@ class QRenderPass;
class QMeshData;
typedef QSharedPointer<QAbstractMeshFunctor> QAbstractMeshFunctorPtr;
-typedef QHandle<QMeshData, 16> HMeshData;
namespace Render {
diff --git a/src/render/backend/renderview_p.h b/src/render/backend/renderview_p.h
index 9f389ede8..14d9235dc 100644
--- a/src/render/backend/renderview_p.h
+++ b/src/render/backend/renderview_p.h
@@ -43,12 +43,12 @@
#ifndef QT3D_RENDER_RENDERVIEW_H
#define QT3D_RENDER_RENDERVIEW_H
+#include <Qt3DRenderer/qparameter.h>
+#include <Qt3DRenderer/qclearbuffer.h>
#include <Qt3DRenderer/private/renderer_p.h>
#include <Qt3DRenderer/private/rendercameralens_p.h>
-#include <Qt3DRenderer/qparameter.h>
-#include <Qt3DCore/qhandle.h>
#include <Qt3DRenderer/private/attachmentpack_p.h>
-#include <Qt3DRenderer/qclearbuffer.h>
+#include <Qt3DRenderer/private/handle_types_p.h>
#include <QVector>
#include <QMutex>
#include <QColor>
@@ -67,17 +67,8 @@ class RenderCommand;
class RenderPassFilter;
class TechniqueFilter;
class ViewportNode;
-class RenderMesh;
class RenderEffect;
class RenderRenderPass;
-class RenderLight;
-class RenderTarget;
-
-typedef QHandle<RenderMesh, 16> HMesh;
-typedef QHandle<RenderMaterial, 16> HMaterial;
-typedef QHandle<RenderTechnique, 16> HTechnique;
-typedef QHandle<RenderLight, 16> HLight;
-typedef QHandle<RenderTarget, 8> HTarget;
typedef QPair<HLight, QMatrix4x4> LightPair;
diff --git a/src/render/backend/texturedatamanager.cpp b/src/render/backend/texturedatamanager.cpp
index 8059d9dda..e72fe64af 100644
--- a/src/render/backend/texturedatamanager.cpp
+++ b/src/render/backend/texturedatamanager.cpp
@@ -47,15 +47,6 @@ namespace Qt3D {
namespace Render {
-TextureDataManager::TextureDataManager()
- : QResourcesManager<TexImageData,
- QUuid,
- 16,
- Qt3D::ListAllocatingPolicy,
- Qt3D::ObjectLevelLockingPolicy>()
-{
-}
-
void Qt3D::Render::TextureDataManager::addTextureData(Qt3D::QTexture *texture)
{
if (!contains(texture->uuid()) && !m_texturesPending.contains(texture))
diff --git a/src/render/backend/texturedatamanager_p.h b/src/render/backend/texturedatamanager_p.h
index 4d78ad1be..ceafef542 100644
--- a/src/render/backend/texturedatamanager_p.h
+++ b/src/render/backend/texturedatamanager_p.h
@@ -45,6 +45,7 @@
#include <Qt3DCore/QResourcesManager>
#include <Qt3DRenderer/qtexture.h>
#include <Qt3DRenderer/texturedata.h>
+#include <Qt3DRenderer/private/handle_types_p.h>
#include <QUuid>
@@ -54,8 +55,6 @@ namespace Qt3D {
namespace Render {
-typedef QHandle<TexImageData, 16> HTextureData;
-
class TextureDataManager : public QResourcesManager<TexImageData,
QUuid,
16,
@@ -63,7 +62,7 @@ class TextureDataManager : public QResourcesManager<TexImageData,
Qt3D::ObjectLevelLockingPolicy>
{
public:
- TextureDataManager();
+ TextureDataManager() {}
void addTextureData(QTexture *texture);