summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2015-05-18 06:48:29 +0400
committerKonstantin Ritt <ritt.ks@gmail.com>2015-05-20 05:55:12 +0000
commitee2b4e7cba8f7451ca974a1f461c90932f232624 (patch)
treea88fc99d73b8084cd2bd63e15b32ec745965696f /src
parentbfae282e8fb6d6d83e92df712f93b583616169d9 (diff)
Properly initialize q_ptr (or avoid where it is not needed)
Referencing a partially-constructed object is typically a bad design. Change-Id: I48ef92452202f6c8c0014e17efd20e2ee2ae7e40 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/io/qabstractattribute.cpp5
-rw-r--r--src/core/io/qabstractattribute_p.h5
-rw-r--r--src/core/io/qabstractbuffer.cpp5
-rw-r--r--src/core/io/qabstractbuffer_p.h6
-rw-r--r--src/core/jobs/qaspectjob.cpp5
-rw-r--r--src/core/jobs/qaspectjob_p.h4
-rw-r--r--src/core/nodes/qbackendnode.cpp8
-rw-r--r--src/core/nodes/qbackendnode_p.h2
-rw-r--r--src/core/qbackendscenepropertychange.cpp6
-rw-r--r--src/core/qbackendscenepropertychange_p.h2
-rw-r--r--src/core/qscene.cpp9
-rw-r--r--src/core/qscenechange.cpp9
-rw-r--r--src/core/qscenechange_p.h2
-rw-r--r--src/core/qscenepropertychange.cpp6
-rw-r--r--src/core/qscenepropertychange_p.h2
-rw-r--r--src/core/resources/qframeallocator.cpp5
-rw-r--r--src/core/resources/qframeallocator_p.h5
-rw-r--r--src/render/io/qattribute.cpp6
-rw-r--r--src/render/io/qattribute_p.h4
-rw-r--r--src/render/io/qbuffer.cpp6
-rw-r--r--src/render/io/qbuffer_p.h3
-rw-r--r--src/render/io/qmeshdata.cpp7
-rw-r--r--src/render/io/qmeshdata_p.h6
23 files changed, 48 insertions, 70 deletions
diff --git a/src/core/io/qabstractattribute.cpp b/src/core/io/qabstractattribute.cpp
index 1dcd72c69..17ed41bf6 100644
--- a/src/core/io/qabstractattribute.cpp
+++ b/src/core/io/qabstractattribute.cpp
@@ -46,8 +46,7 @@ namespace Qt3D {
\class Qt3D::QAbstractAttributePrivate
\internal
*/
-QAbstractAttributePrivate::QAbstractAttributePrivate(QAbstractAttribute *qq)
- : q_ptr(qq)
+QAbstractAttributePrivate::QAbstractAttributePrivate()
{
}
@@ -65,7 +64,7 @@ QAbstractAttribute::QAbstractAttribute(QAbstractAttributePrivate &dd, QAbstractB
}
QAbstractAttribute::QAbstractAttribute(QAbstractBufferPtr buf, int type, uint count, uint offset, uint stride)
- : d_ptr(new QAbstractAttributePrivate(this))
+ : d_ptr(new QAbstractAttributePrivate)
{
Q_D(QAbstractAttribute);
d->m_buffer = buf;
diff --git a/src/core/io/qabstractattribute_p.h b/src/core/io/qabstractattribute_p.h
index 947dd2703..526a8d81d 100644
--- a/src/core/io/qabstractattribute_p.h
+++ b/src/core/io/qabstractattribute_p.h
@@ -43,7 +43,6 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
-class QAbstractAttribute;
class QAbstractBuffer;
typedef QSharedPointer<QAbstractBuffer> QAbstractBufferPtr;
@@ -51,10 +50,8 @@ typedef QSharedPointer<QAbstractBuffer> QAbstractBufferPtr;
class QT3DCORESHARED_EXPORT QAbstractAttributePrivate
{
public:
- QAbstractAttributePrivate(QAbstractAttribute *qq);
+ QAbstractAttributePrivate();
- Q_DECLARE_PUBLIC(QAbstractAttribute)
- QAbstractAttribute *q_ptr;
int m_type;
uint m_count;
uint m_stride;
diff --git a/src/core/io/qabstractbuffer.cpp b/src/core/io/qabstractbuffer.cpp
index afef0d108..9337b923f 100644
--- a/src/core/io/qabstractbuffer.cpp
+++ b/src/core/io/qabstractbuffer.cpp
@@ -45,13 +45,12 @@ namespace Qt3D {
\class Qt3D::QAbstractBufferPrivate
\internal
*/
-QAbstractBufferPrivate::QAbstractBufferPrivate(QAbstractBuffer *qq)
- : q_ptr(qq)
+QAbstractBufferPrivate::QAbstractBufferPrivate()
{
}
QAbstractBuffer::QAbstractBuffer()
- : d_ptr(new QAbstractBufferPrivate(this))
+ : d_ptr(new QAbstractBufferPrivate)
{
}
diff --git a/src/core/io/qabstractbuffer_p.h b/src/core/io/qabstractbuffer_p.h
index 68d04bce7..a393df4dd 100644
--- a/src/core/io/qabstractbuffer_p.h
+++ b/src/core/io/qabstractbuffer_p.h
@@ -44,15 +44,11 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
-class QAbstractBuffer;
-
class QT3DCORESHARED_EXPORT QAbstractBufferPrivate
{
public:
- QAbstractBufferPrivate(QAbstractBuffer *qq);
+ QAbstractBufferPrivate();
- Q_DECLARE_PUBLIC(QAbstractBuffer)
- QAbstractBuffer *q_ptr;
QByteArray m_data;
};
diff --git a/src/core/jobs/qaspectjob.cpp b/src/core/jobs/qaspectjob.cpp
index 5442c5b88..9f12adb9c 100644
--- a/src/core/jobs/qaspectjob.cpp
+++ b/src/core/jobs/qaspectjob.cpp
@@ -45,13 +45,12 @@ namespace Qt3D {
\class Qt3D::QAspectJobPrivate
\internal
*/
-QAspectJobPrivate::QAspectJobPrivate(QAspectJob *qq)
- : q_ptr(qq)
+QAspectJobPrivate::QAspectJobPrivate()
{
}
QAspectJob::QAspectJob()
- : d_ptr(new QAspectJobPrivate(this))
+ : d_ptr(new QAspectJobPrivate)
{
}
diff --git a/src/core/jobs/qaspectjob_p.h b/src/core/jobs/qaspectjob_p.h
index 1517f5100..d1fdac44c 100644
--- a/src/core/jobs/qaspectjob_p.h
+++ b/src/core/jobs/qaspectjob_p.h
@@ -49,11 +49,9 @@ class QAspectJob;
class QAspectJobPrivate
{
public:
- QAspectJobPrivate(QAspectJob *qq);
+ QAspectJobPrivate();
- Q_DECLARE_PUBLIC(QAspectJob)
QVector<QWeakPointer<QAspectJob> > m_dependencies;
- QAspectJob *q_ptr;
};
} // Qt3D
diff --git a/src/core/nodes/qbackendnode.cpp b/src/core/nodes/qbackendnode.cpp
index df7662f1f..a897f6f04 100644
--- a/src/core/nodes/qbackendnode.cpp
+++ b/src/core/nodes/qbackendnode.cpp
@@ -48,8 +48,8 @@ namespace Qt3D {
\class Qt3D::QBackendNodePrivate
\internal
*/
-QBackendNodePrivate::QBackendNodePrivate(QBackendNode *qq, QBackendNode::Mode mode)
- : q_ptr(qq)
+QBackendNodePrivate::QBackendNodePrivate(QBackendNode::Mode mode)
+ : q_ptr(Q_NULLPTR)
, m_mode(mode)
, m_factory(Q_NULLPTR)
, m_arbiter(Q_NULLPTR)
@@ -83,8 +83,9 @@ QBackendNodePrivate *QBackendNodePrivate::get(QBackendNode *n)
}
QBackendNode::QBackendNode(QBackendNode::Mode mode)
- : d_ptr(new QBackendNodePrivate(this, mode))
+ : d_ptr(new QBackendNodePrivate(mode))
{
+ d_ptr->q_ptr = this;
}
QBackendNode::~QBackendNode()
@@ -131,6 +132,7 @@ QBackendNode *QBackendNode::createBackendNode(QNode *frontend) const
QBackendNode::QBackendNode(QBackendNodePrivate &dd)
: d_ptr(&dd)
{
+ d_ptr->q_ptr = this;
}
void QBackendNode::notifyObservers(const QSceneChangePtr &e)
diff --git a/src/core/nodes/qbackendnode_p.h b/src/core/nodes/qbackendnode_p.h
index b433c3f3a..104c4b4cd 100644
--- a/src/core/nodes/qbackendnode_p.h
+++ b/src/core/nodes/qbackendnode_p.h
@@ -56,7 +56,7 @@ class QT3DCORE_PRIVATE_EXPORT QBackendNodePrivate
, public QObservableInterface
{
public:
- QBackendNodePrivate(QBackendNode *qq, QBackendNode::Mode mode);
+ QBackendNodePrivate(QBackendNode::Mode mode);
void setFactory(const QBackendNodeFactory *factory);
void setArbiter(QLockableObserverInterface *arbiter) Q_DECL_OVERRIDE;
diff --git a/src/core/qbackendscenepropertychange.cpp b/src/core/qbackendscenepropertychange.cpp
index b0ed2ea40..86c334d42 100644
--- a/src/core/qbackendscenepropertychange.cpp
+++ b/src/core/qbackendscenepropertychange.cpp
@@ -51,8 +51,8 @@ namespace Qt3D {
\class Qt3D::QBackendScenePropertyChangePrivate
\internal
*/
-QBackendScenePropertyChangePrivate::QBackendScenePropertyChangePrivate(QBackendScenePropertyChange *qq)
- : QScenePropertyChangePrivate(qq)
+QBackendScenePropertyChangePrivate::QBackendScenePropertyChangePrivate()
+ : QScenePropertyChangePrivate()
{
}
@@ -61,7 +61,7 @@ QBackendScenePropertyChangePrivate::~QBackendScenePropertyChangePrivate()
}
QBackendScenePropertyChange::QBackendScenePropertyChange(ChangeFlag type, const QNodeId &subjectId, QSceneChange::Priority priority)
- : QScenePropertyChange(*new QBackendScenePropertyChangePrivate(this), type, Observable, subjectId, priority)
+ : QScenePropertyChange(*new QBackendScenePropertyChangePrivate, type, Observable, subjectId, priority)
{
}
diff --git a/src/core/qbackendscenepropertychange_p.h b/src/core/qbackendscenepropertychange_p.h
index fb8982024..392fa507a 100644
--- a/src/core/qbackendscenepropertychange_p.h
+++ b/src/core/qbackendscenepropertychange_p.h
@@ -49,7 +49,7 @@ class QBackendScenePropertyChange;
class QBackendScenePropertyChangePrivate : public QScenePropertyChangePrivate
{
public:
- QBackendScenePropertyChangePrivate(QBackendScenePropertyChange *qq);
+ QBackendScenePropertyChangePrivate();
virtual ~QBackendScenePropertyChangePrivate();
Q_DECLARE_PUBLIC(QBackendScenePropertyChange)
diff --git a/src/core/qscene.cpp b/src/core/qscene.cpp
index a4a9733fc..cf3329b25 100644
--- a/src/core/qscene.cpp
+++ b/src/core/qscene.cpp
@@ -49,15 +49,12 @@ namespace Qt3D {
class QScenePrivate
{
public:
- QScenePrivate(QAspectEngine *engine, QScene *qq)
- : q_ptr(qq)
- , m_engine(engine)
+ QScenePrivate(QAspectEngine *engine)
+ : m_engine(engine)
, m_arbiter(Q_NULLPTR)
{
}
- Q_DECLARE_PUBLIC(QScene)
- QScene *q_ptr;
QAspectEngine *m_engine;
QHash<QNodeId, QNode *> m_nodeLookupTable;
QMultiHash<QNodeId, QNodeId> m_componentToEntities;
@@ -70,7 +67,7 @@ public:
QScene::QScene(QAspectEngine *engine)
- : d_ptr(new QScenePrivate(engine, this))
+ : d_ptr(new QScenePrivate(engine))
{
}
diff --git a/src/core/qscenechange.cpp b/src/core/qscenechange.cpp
index 5632b2a4d..9c278d8b5 100644
--- a/src/core/qscenechange.cpp
+++ b/src/core/qscenechange.cpp
@@ -62,8 +62,8 @@ namespace Qt3D {
\class Qt3D::QSceneChangePrivate
\internal
*/
-QSceneChangePrivate::QSceneChangePrivate(QSceneChange *qq)
- : q_ptr(qq)
+QSceneChangePrivate::QSceneChangePrivate()
+ : q_ptr(Q_NULLPTR)
{
}
@@ -72,8 +72,9 @@ QSceneChangePrivate::~QSceneChangePrivate()
}
QSceneChange::QSceneChange(ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, QSceneChange::Priority priority)
- : d_ptr(new QSceneChangePrivate(this))
+ : d_ptr(new QSceneChangePrivate)
{
+ d_ptr->q_ptr = this;
Q_D(QSceneChange);
d->m_type = type;
d->m_priority = priority;
@@ -91,12 +92,14 @@ QSceneChange::~QSceneChange()
QSceneChange::QSceneChange(QSceneChangePrivate &dd)
: d_ptr(&dd)
{
+ d_ptr->q_ptr = this;
}
/*! \internal */
QSceneChange::QSceneChange(QSceneChangePrivate &dd, ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, QSceneChange::Priority priority)
: d_ptr(&dd)
{
+ d_ptr->q_ptr = this;
Q_D(QSceneChange);
d->m_type = type;
d->m_priority = priority;
diff --git a/src/core/qscenechange_p.h b/src/core/qscenechange_p.h
index b903b1035..d8dce5912 100644
--- a/src/core/qscenechange_p.h
+++ b/src/core/qscenechange_p.h
@@ -49,7 +49,7 @@ class QNodeId;
class QSceneChangePrivate
{
public :
- QSceneChangePrivate(QSceneChange *qq);
+ QSceneChangePrivate();
virtual ~QSceneChangePrivate();
Q_DECLARE_PUBLIC(QSceneChange)
diff --git a/src/core/qscenepropertychange.cpp b/src/core/qscenepropertychange.cpp
index 1f3ae9558..44c8ddcac 100644
--- a/src/core/qscenepropertychange.cpp
+++ b/src/core/qscenepropertychange.cpp
@@ -53,8 +53,8 @@ QMutex QScenePropertyChangePrivate::m_mutex;
\class Qt3D::QScenePropertyChangePrivate
\internal
*/
-QScenePropertyChangePrivate::QScenePropertyChangePrivate(QScenePropertyChange *qq)
- : QSceneChangePrivate(qq)
+QScenePropertyChangePrivate::QScenePropertyChangePrivate()
+ : QSceneChangePrivate()
{
}
@@ -76,7 +76,7 @@ void QScenePropertyChangePrivate::operator delete(void *ptr, size_t size)
}
QScenePropertyChange::QScenePropertyChange(ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, QSceneChange::Priority priority)
- : QSceneChange(*new QScenePropertyChangePrivate(this), type, observableType, subjectId, priority)
+ : QSceneChange(*new QScenePropertyChangePrivate, type, observableType, subjectId, priority)
{
}
diff --git a/src/core/qscenepropertychange_p.h b/src/core/qscenepropertychange_p.h
index 309413593..ea88c8f7a 100644
--- a/src/core/qscenepropertychange_p.h
+++ b/src/core/qscenepropertychange_p.h
@@ -51,7 +51,7 @@ class QFrameAllocator;
class QScenePropertyChangePrivate : public QSceneChangePrivate
{
public:
- QScenePropertyChangePrivate(QScenePropertyChange *qq);
+ QScenePropertyChangePrivate();
virtual ~QScenePropertyChangePrivate();
static void *operator new(size_t size);
diff --git a/src/core/resources/qframeallocator.cpp b/src/core/resources/qframeallocator.cpp
index ead5a790e..c62e7ad0d 100644
--- a/src/core/resources/qframeallocator.cpp
+++ b/src/core/resources/qframeallocator.cpp
@@ -53,13 +53,12 @@ namespace Qt3D {
\class Qt3D::QFrameAllocatorPrivate
\internal
*/
-QFrameAllocatorPrivate::QFrameAllocatorPrivate(QFrameAllocator *qq)
- : q_ptr(qq)
+QFrameAllocatorPrivate::QFrameAllocatorPrivate()
{
}
QFrameAllocator::QFrameAllocator(uint maxObjectSize, uint alignment, uint pageSize)
- : d_ptr(new QFrameAllocatorPrivate(this))
+ : d_ptr(new QFrameAllocatorPrivate)
{
Q_ASSERT(alignment && pageSize && pageSize < UCHAR_MAX);
Q_D(QFrameAllocator);
diff --git a/src/core/resources/qframeallocator_p.h b/src/core/resources/qframeallocator_p.h
index dbf68ea63..990066138 100644
--- a/src/core/resources/qframeallocator_p.h
+++ b/src/core/resources/qframeallocator_p.h
@@ -91,7 +91,7 @@ private:
class QFrameAllocatorPrivate
{
public:
- QFrameAllocatorPrivate(QFrameAllocator *qq);
+ QFrameAllocatorPrivate();
inline void *allocateAtChunk(uint allocatorIndex)
{
@@ -108,9 +108,6 @@ public:
return (targetSize + m_alignment - 1) / m_alignment - 1;
}
- Q_DECLARE_PUBLIC(QFrameAllocator)
- QFrameAllocator *q_ptr;
-
uint m_maxObjectSize;
uint m_alignment;
QVector<QFixedFrameAllocator> m_allocatorPool;
diff --git a/src/render/io/qattribute.cpp b/src/render/io/qattribute.cpp
index 821a28f1c..c1329fc8c 100644
--- a/src/render/io/qattribute.cpp
+++ b/src/render/io/qattribute.cpp
@@ -50,13 +50,13 @@ namespace Qt3D {
class Qt3D::AttributePrivate
\internal
*/
-AttributePrivate::AttributePrivate(Attribute *qq)
- : QAbstractAttributePrivate(qq)
+AttributePrivate::AttributePrivate()
+ : QAbstractAttributePrivate()
{
}
Attribute::Attribute(QAbstractBufferPtr buf, int type, int count, int offset, int stride)
- : QAbstractAttribute(*new AttributePrivate(this), buf, type, count, offset, stride)
+ : QAbstractAttribute(*new AttributePrivate, buf, type, count, offset, stride)
{
}
diff --git a/src/render/io/qattribute_p.h b/src/render/io/qattribute_p.h
index 710763d8e..82b2278d6 100644
--- a/src/render/io/qattribute_p.h
+++ b/src/render/io/qattribute_p.h
@@ -49,9 +49,7 @@ class Attribute;
class QT3DRENDERERSHARED_EXPORT AttributePrivate : public QAbstractAttributePrivate
{
public:
- AttributePrivate(Attribute *qq);
-
- Q_DECLARE_PUBLIC(Attribute)
+ AttributePrivate();
};
} // Qt3D
diff --git a/src/render/io/qbuffer.cpp b/src/render/io/qbuffer.cpp
index 209f87aca..54ab6d75d 100644
--- a/src/render/io/qbuffer.cpp
+++ b/src/render/io/qbuffer.cpp
@@ -46,13 +46,13 @@ namespace Qt3D {
\class Qt3D::BufferPrivate
\internal
*/
-BufferPrivate::BufferPrivate(Buffer *qq)
- : QAbstractBufferPrivate(qq)
+BufferPrivate::BufferPrivate()
+ : QAbstractBufferPrivate()
{
}
Buffer::Buffer(QOpenGLBuffer::Type ty)
- : QAbstractBuffer(*new BufferPrivate(this))
+ : QAbstractBuffer(*new BufferPrivate)
{
Q_D(Buffer);
d->m_type = ty;
diff --git a/src/render/io/qbuffer_p.h b/src/render/io/qbuffer_p.h
index 5b9e9ea3f..c86bdcd5c 100644
--- a/src/render/io/qbuffer_p.h
+++ b/src/render/io/qbuffer_p.h
@@ -50,9 +50,8 @@ class Buffer;
class QT3DRENDERERSHARED_EXPORT BufferPrivate : public QAbstractBufferPrivate
{
public:
- BufferPrivate(Buffer *qq);
+ BufferPrivate();
- Q_DECLARE_PUBLIC(Buffer)
QOpenGLBuffer::Type m_type;
QOpenGLBuffer::UsagePattern m_usage;
};
diff --git a/src/render/io/qmeshdata.cpp b/src/render/io/qmeshdata.cpp
index f53d4c8af..ddb2b00d8 100644
--- a/src/render/io/qmeshdata.cpp
+++ b/src/render/io/qmeshdata.cpp
@@ -48,15 +48,14 @@ namespace Qt3D {
\class Qt3D::QMeshDataPrivate
\internal
*/
-QMeshDataPrivate::QMeshDataPrivate(QMeshData *qq)
- : q_ptr(qq)
- , m_verticesPerPatch(0)
+QMeshDataPrivate::QMeshDataPrivate()
+ : m_verticesPerPatch(0)
, m_primitiveType(0)
{
}
QMeshData::QMeshData(PrimitiveType primitiveType)
- : d_ptr(new QMeshDataPrivate(this))
+ : d_ptr(new QMeshDataPrivate)
{
setPrimitiveType(primitiveType);
}
diff --git a/src/render/io/qmeshdata_p.h b/src/render/io/qmeshdata_p.h
index acb0fb872..19bb89963 100644
--- a/src/render/io/qmeshdata_p.h
+++ b/src/render/io/qmeshdata_p.h
@@ -47,7 +47,6 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
-class QMeshData;
class QAbstractAttribute;
class QAbstractBuffer;
@@ -56,10 +55,7 @@ typedef QSharedPointer<QAbstractAttribute> QAbstractAttributePtr;
class QMeshDataPrivate
{
public:
- QMeshDataPrivate(QMeshData *qq);
-
- Q_DECLARE_PUBLIC(QMeshData)
- QMeshData *q_ptr;
+ QMeshDataPrivate();
QStringList m_attributesNames;
QVector<QAbstractAttributePtr> m_attributes;