diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-05-14 08:52:45 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-05-19 07:03:19 +0000 |
commit | 6f6207fadc1a334d1aed98f840a0d074acf18d06 (patch) | |
tree | 083bf49b4d6bc999f099b3c1e2897cb23cb89887 /src/render/renderstates | |
parent | 72f2c87d15c76cc861699aea536e01bc8d56c8f2 (diff) |
De-inline dtors of public polymorphic classes
By making the destructor (usually the first non-inline, non-pure,
virtual function, and therefore the trigger for most compilers to
emit the vtable and type_info structures for the class in that TU)
out-of-line, vtables and, more importantly, type_info structures for
the class are pinned to a single TU. This prevents false negative
dynamic_cast and catch evaluation.
It also allows to add code to them later, if necessary.
Change-Id: I0da301cd788162abba6cdbbb21910090a22adb9a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/renderstates')
40 files changed, 123 insertions, 0 deletions
diff --git a/src/render/renderstates/qalphacoverage.cpp b/src/render/renderstates/qalphacoverage.cpp index d5ced01fc..2707b1edc 100644 --- a/src/render/renderstates/qalphacoverage.cpp +++ b/src/render/renderstates/qalphacoverage.cpp @@ -60,6 +60,11 @@ QAlphaCoverage::QAlphaCoverage(QNode *parent) { } +/*! \internal */ +QAlphaCoverage::~QAlphaCoverage() +{ +} + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/render/renderstates/qalphacoverage.h b/src/render/renderstates/qalphacoverage.h index e74a6b823..53636d300 100644 --- a/src/render/renderstates/qalphacoverage.h +++ b/src/render/renderstates/qalphacoverage.h @@ -54,6 +54,7 @@ class QT3DRENDERSHARED_EXPORT QAlphaCoverage : public QRenderState Q_OBJECT public: explicit QAlphaCoverage(Qt3DCore::QNode *parent = nullptr); + ~QAlphaCoverage(); private: Q_DECLARE_PRIVATE(QAlphaCoverage) diff --git a/src/render/renderstates/qalphatest.cpp b/src/render/renderstates/qalphatest.cpp index d6b4d03b7..9f60ceac6 100644 --- a/src/render/renderstates/qalphatest.cpp +++ b/src/render/renderstates/qalphatest.cpp @@ -51,6 +51,11 @@ QAlphaTest::QAlphaTest(QNode *parent) { } +/*! \internal */ +QAlphaTest::~QAlphaTest() +{ +} + QAlphaTest::AlphaFunction QAlphaTest::alphaFunction() const { Q_D(const QAlphaTest); diff --git a/src/render/renderstates/qalphatest.h b/src/render/renderstates/qalphatest.h index 02c0db54b..49a5fac43 100644 --- a/src/render/renderstates/qalphatest.h +++ b/src/render/renderstates/qalphatest.h @@ -69,6 +69,7 @@ public: Q_ENUM(AlphaFunction) explicit QAlphaTest(Qt3DCore::QNode *parent = nullptr); + ~QAlphaTest(); AlphaFunction alphaFunction() const; float referenceValue() const; diff --git a/src/render/renderstates/qblendequation.cpp b/src/render/renderstates/qblendequation.cpp index 5062b157d..fef531f20 100644 --- a/src/render/renderstates/qblendequation.cpp +++ b/src/render/renderstates/qblendequation.cpp @@ -51,6 +51,11 @@ QBlendEquation::QBlendEquation(QNode *parent) { } +/*! \internal */ +QBlendEquation::~QBlendEquation() +{ +} + QBlendEquation::BlendFunction QBlendEquation::blendFunction() const { Q_D(const QBlendEquation); diff --git a/src/render/renderstates/qblendequation.h b/src/render/renderstates/qblendequation.h index b433bfbb0..6810cf96e 100644 --- a/src/render/renderstates/qblendequation.h +++ b/src/render/renderstates/qblendequation.h @@ -66,6 +66,7 @@ public: Q_ENUM(BlendFunction) explicit QBlendEquation(Qt3DCore::QNode *parent = nullptr); + ~QBlendEquation(); BlendFunction blendFunction() const; diff --git a/src/render/renderstates/qblendequationarguments.cpp b/src/render/renderstates/qblendequationarguments.cpp index 7983b9c0a..a57c19b76 100644 --- a/src/render/renderstates/qblendequationarguments.cpp +++ b/src/render/renderstates/qblendequationarguments.cpp @@ -86,6 +86,13 @@ QBlendEquationArguments::QBlendEquationArguments(QNode *parent) /*! \internal */ +QBlendEquationArguments::~QBlendEquationArguments() +{ +} + +/*! + \internal +*/ QBlendEquationArguments::QBlendEquationArguments(QBlendEquationArgumentsPrivate &dd, QNode *parent) : QRenderState(dd, parent) { diff --git a/src/render/renderstates/qblendequationarguments.h b/src/render/renderstates/qblendequationarguments.h index e8107fa47..8e2f86f6c 100644 --- a/src/render/renderstates/qblendequationarguments.h +++ b/src/render/renderstates/qblendequationarguments.h @@ -85,6 +85,7 @@ public: Q_ENUM(Blending) explicit QBlendEquationArguments(Qt3DCore::QNode *parent = nullptr); + ~QBlendEquationArguments(); Blending sourceRgb() const; Blending destinationRgb() const; diff --git a/src/render/renderstates/qclipplane.cpp b/src/render/renderstates/qclipplane.cpp index 2deab3bf1..f117d040a 100644 --- a/src/render/renderstates/qclipplane.cpp +++ b/src/render/renderstates/qclipplane.cpp @@ -78,6 +78,11 @@ QClipPlane::QClipPlane(QNode *parent) { } +/*! \internal */ +QClipPlane::~QClipPlane() +{ +} + /*! * Returns the index of the clip plane. * \note usually between 0-7 diff --git a/src/render/renderstates/qclipplane.h b/src/render/renderstates/qclipplane.h index 001fa7333..46c44ad44 100644 --- a/src/render/renderstates/qclipplane.h +++ b/src/render/renderstates/qclipplane.h @@ -57,6 +57,7 @@ class QT3DRENDERSHARED_EXPORT QClipPlane : public QRenderState Q_PROPERTY(float distance READ distance WRITE setDistance NOTIFY distanceChanged) public: explicit QClipPlane(Qt3DCore::QNode *parent = nullptr); + ~QClipPlane(); int planeIndex() const; QVector3D normal() const; diff --git a/src/render/renderstates/qcolormask.cpp b/src/render/renderstates/qcolormask.cpp index da231dc2d..71819db94 100644 --- a/src/render/renderstates/qcolormask.cpp +++ b/src/render/renderstates/qcolormask.cpp @@ -67,6 +67,11 @@ QColorMask::QColorMask(QNode *parent) { } +/*! \internal */ +QColorMask::~QColorMask() +{ +} + bool QColorMask::isRedMasked() const { Q_D(const QColorMask); diff --git a/src/render/renderstates/qcolormask.h b/src/render/renderstates/qcolormask.h index eb6e56d1f..d42f87df0 100644 --- a/src/render/renderstates/qcolormask.h +++ b/src/render/renderstates/qcolormask.h @@ -58,6 +58,7 @@ class QT3DRENDERSHARED_EXPORT QColorMask : public QRenderState public: explicit QColorMask(Qt3DCore::QNode *parent = nullptr); + ~QColorMask(); bool isRedMasked() const; bool isGreenMasked() const; diff --git a/src/render/renderstates/qcullface.cpp b/src/render/renderstates/qcullface.cpp index cebb55761..6406da91c 100644 --- a/src/render/renderstates/qcullface.cpp +++ b/src/render/renderstates/qcullface.cpp @@ -51,6 +51,11 @@ QCullFace::QCullFace(QNode *parent) { } +/*! \internal */ +QCullFace::~QCullFace() +{ +} + QCullFace::CullingMode QCullFace::mode() const { Q_D(const QCullFace); diff --git a/src/render/renderstates/qcullface.h b/src/render/renderstates/qcullface.h index 9b175685f..3474fe009 100644 --- a/src/render/renderstates/qcullface.h +++ b/src/render/renderstates/qcullface.h @@ -67,6 +67,7 @@ public: Q_ENUM(CullingMode) explicit QCullFace(Qt3DCore::QNode *parent = nullptr); + ~QCullFace(); CullingMode mode() const; diff --git a/src/render/renderstates/qdepthtest.cpp b/src/render/renderstates/qdepthtest.cpp index 00207c824..5a4454d17 100644 --- a/src/render/renderstates/qdepthtest.cpp +++ b/src/render/renderstates/qdepthtest.cpp @@ -51,6 +51,11 @@ QDepthTest::QDepthTest(QNode *parent) { } +/*! \internal */ +QDepthTest::~QDepthTest() +{ +} + QDepthTest::DepthFunction QDepthTest::depthFunction() const { Q_D(const QDepthTest); diff --git a/src/render/renderstates/qdepthtest.h b/src/render/renderstates/qdepthtest.h index 51929629f..16b4a5b85 100644 --- a/src/render/renderstates/qdepthtest.h +++ b/src/render/renderstates/qdepthtest.h @@ -68,6 +68,7 @@ public: Q_ENUM(DepthFunction) explicit QDepthTest(Qt3DCore::QNode *parent = nullptr); + ~QDepthTest(); DepthFunction depthFunction() const; diff --git a/src/render/renderstates/qdithering.cpp b/src/render/renderstates/qdithering.cpp index 072699bea..4b1176330 100644 --- a/src/render/renderstates/qdithering.cpp +++ b/src/render/renderstates/qdithering.cpp @@ -62,6 +62,11 @@ QDithering::QDithering(QNode *parent) { } +/*! \internal */ +QDithering::~QDithering() +{ +} + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/render/renderstates/qdithering.h b/src/render/renderstates/qdithering.h index 538c98e4d..db6667f8a 100644 --- a/src/render/renderstates/qdithering.h +++ b/src/render/renderstates/qdithering.h @@ -54,6 +54,7 @@ class QT3DRENDERSHARED_EXPORT QDithering : public QRenderState Q_OBJECT public: explicit QDithering(Qt3DCore::QNode *parent = nullptr); + ~QDithering(); private: Q_DECLARE_PRIVATE(QDithering) diff --git a/src/render/renderstates/qfrontface.cpp b/src/render/renderstates/qfrontface.cpp index e5efcb882..49942ff0d 100644 --- a/src/render/renderstates/qfrontface.cpp +++ b/src/render/renderstates/qfrontface.cpp @@ -51,6 +51,11 @@ QFrontFace::QFrontFace(QNode *parent) { } +/*! \internal */ +QFrontFace::~QFrontFace() +{ +} + QFrontFace::WindingDirection QFrontFace::direction() const { Q_D(const QFrontFace); diff --git a/src/render/renderstates/qfrontface.h b/src/render/renderstates/qfrontface.h index 8a7258504..dd8a7f5fe 100644 --- a/src/render/renderstates/qfrontface.h +++ b/src/render/renderstates/qfrontface.h @@ -63,6 +63,7 @@ public: Q_ENUM(WindingDirection) explicit QFrontFace(Qt3DCore::QNode *parent = nullptr); + ~QFrontFace(); WindingDirection direction() const; diff --git a/src/render/renderstates/qmultisampleantialiasing.cpp b/src/render/renderstates/qmultisampleantialiasing.cpp index 501c800ec..6697bdbf5 100644 --- a/src/render/renderstates/qmultisampleantialiasing.cpp +++ b/src/render/renderstates/qmultisampleantialiasing.cpp @@ -62,6 +62,11 @@ QMultiSampleAntiAliasing::QMultiSampleAntiAliasing(QNode *parent) { } +/*! \internal */ +QMultiSampleAntiAliasing::~QMultiSampleAntiAliasing() +{ +} + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/render/renderstates/qmultisampleantialiasing.h b/src/render/renderstates/qmultisampleantialiasing.h index fa672189b..087f32ce2 100644 --- a/src/render/renderstates/qmultisampleantialiasing.h +++ b/src/render/renderstates/qmultisampleantialiasing.h @@ -54,6 +54,7 @@ class QT3DRENDERSHARED_EXPORT QMultiSampleAntiAliasing : public QRenderState public: explicit QMultiSampleAntiAliasing(Qt3DCore::QNode *parent = nullptr); + ~QMultiSampleAntiAliasing(); private: Q_DECLARE_PRIVATE(QMultiSampleAntiAliasing) diff --git a/src/render/renderstates/qnodepthmask.cpp b/src/render/renderstates/qnodepthmask.cpp index 9b471cd72..4e0975310 100644 --- a/src/render/renderstates/qnodepthmask.cpp +++ b/src/render/renderstates/qnodepthmask.cpp @@ -63,6 +63,11 @@ QNoDepthMask::QNoDepthMask(QNode *parent) { } +/*! \internal */ +QNoDepthMask::~QNoDepthMask() +{ +} + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/render/renderstates/qnodepthmask.h b/src/render/renderstates/qnodepthmask.h index 8e3cc8d76..20171595e 100644 --- a/src/render/renderstates/qnodepthmask.h +++ b/src/render/renderstates/qnodepthmask.h @@ -54,6 +54,7 @@ class QT3DRENDERSHARED_EXPORT QNoDepthMask : public QRenderState Q_OBJECT public: explicit QNoDepthMask(Qt3DCore::QNode *parent = nullptr); + ~QNoDepthMask(); private: Q_DECLARE_PRIVATE(QNoDepthMask) diff --git a/src/render/renderstates/qpointsize.cpp b/src/render/renderstates/qpointsize.cpp index 908940e0f..8aa2d7e0c 100644 --- a/src/render/renderstates/qpointsize.cpp +++ b/src/render/renderstates/qpointsize.cpp @@ -61,6 +61,11 @@ QPointSize::QPointSize(Qt3DCore::QNode *parent) { } +/*! \internal */ +QPointSize::~QPointSize() +{ +} + QPointSize::SizeMode QPointSize::sizeMode() const { Q_D(const QPointSize); diff --git a/src/render/renderstates/qpointsize.h b/src/render/renderstates/qpointsize.h index 51a4e9674..fdfa54a9c 100644 --- a/src/render/renderstates/qpointsize.h +++ b/src/render/renderstates/qpointsize.h @@ -61,6 +61,7 @@ public: Q_ENUM(SizeMode) explicit QPointSize(Qt3DCore::QNode *parent = nullptr); + ~QPointSize(); SizeMode sizeMode() const; float value() const; diff --git a/src/render/renderstates/qpolygonoffset.cpp b/src/render/renderstates/qpolygonoffset.cpp index edada68ae..b71e803fd 100644 --- a/src/render/renderstates/qpolygonoffset.cpp +++ b/src/render/renderstates/qpolygonoffset.cpp @@ -50,6 +50,11 @@ QPolygonOffset::QPolygonOffset(QNode *parent) { } +/*! \internal */ +QPolygonOffset::~QPolygonOffset() +{ +} + float QPolygonOffset::scaleFactor() const { Q_D(const QPolygonOffset); diff --git a/src/render/renderstates/qpolygonoffset.h b/src/render/renderstates/qpolygonoffset.h index eb78c39e8..3be117fb3 100644 --- a/src/render/renderstates/qpolygonoffset.h +++ b/src/render/renderstates/qpolygonoffset.h @@ -56,6 +56,7 @@ class QT3DRENDERSHARED_EXPORT QPolygonOffset : public QRenderState Q_PROPERTY(float depthSteps READ depthSteps WRITE setDepthSteps NOTIFY depthStepsChanged) public: explicit QPolygonOffset(Qt3DCore::QNode *parent = nullptr); + ~QPolygonOffset(); float scaleFactor() const; float depthSteps() const; diff --git a/src/render/renderstates/qrenderstate.cpp b/src/render/renderstates/qrenderstate.cpp index 16524365f..ce2f67f11 100644 --- a/src/render/renderstates/qrenderstate.cpp +++ b/src/render/renderstates/qrenderstate.cpp @@ -63,6 +63,11 @@ const QRenderStatePrivate *QRenderStatePrivate::get(const QRenderState *state) } /*! \internal */ +QRenderState::~QRenderState() +{ +} + +/*! \internal */ QRenderState::QRenderState(QRenderStatePrivate &dd, QNode *parent) : QNode(dd, parent) { diff --git a/src/render/renderstates/qrenderstate.h b/src/render/renderstates/qrenderstate.h index 6f40658b2..0ecc805e3 100644 --- a/src/render/renderstates/qrenderstate.h +++ b/src/render/renderstates/qrenderstate.h @@ -53,6 +53,8 @@ class QRenderStatePrivate; class QT3DRENDERSHARED_EXPORT QRenderState : public Qt3DCore::QNode { Q_OBJECT +public: + ~QRenderState(); protected: explicit QRenderState(QRenderStatePrivate &dd, Qt3DCore::QNode *parent = nullptr); diff --git a/src/render/renderstates/qscissortest.cpp b/src/render/renderstates/qscissortest.cpp index e56ac83e6..0897a52c4 100644 --- a/src/render/renderstates/qscissortest.cpp +++ b/src/render/renderstates/qscissortest.cpp @@ -51,6 +51,11 @@ QScissorTest::QScissorTest(QNode *parent) { } +/*! \internal */ +QScissorTest::~QScissorTest() +{ +} + int QScissorTest::left() const { Q_D(const QScissorTest); diff --git a/src/render/renderstates/qscissortest.h b/src/render/renderstates/qscissortest.h index b71aa6825..65327bd39 100644 --- a/src/render/renderstates/qscissortest.h +++ b/src/render/renderstates/qscissortest.h @@ -59,6 +59,7 @@ class QT3DRENDERSHARED_EXPORT QScissorTest : public QRenderState public: explicit QScissorTest(Qt3DCore::QNode *parent = nullptr); + ~QScissorTest(); int left() const; int bottom() const; diff --git a/src/render/renderstates/qseamlesscubemap.cpp b/src/render/renderstates/qseamlesscubemap.cpp index 881274c23..a017228b0 100644 --- a/src/render/renderstates/qseamlesscubemap.cpp +++ b/src/render/renderstates/qseamlesscubemap.cpp @@ -62,6 +62,11 @@ QSeamlessCubemap::QSeamlessCubemap(QNode *parent) { } +/*! \internal */ +QSeamlessCubemap::~QSeamlessCubemap() +{ +} + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/render/renderstates/qseamlesscubemap.h b/src/render/renderstates/qseamlesscubemap.h index 029c6d674..40ae0a955 100644 --- a/src/render/renderstates/qseamlesscubemap.h +++ b/src/render/renderstates/qseamlesscubemap.h @@ -54,6 +54,7 @@ class QT3DRENDERSHARED_EXPORT QSeamlessCubemap : public QRenderState public: explicit QSeamlessCubemap(Qt3DCore::QNode *parent = nullptr); + ~QSeamlessCubemap(); private: Q_DECLARE_PRIVATE(QSeamlessCubemap) diff --git a/src/render/renderstates/qstencilmask.cpp b/src/render/renderstates/qstencilmask.cpp index 79416eba9..445d25d1c 100644 --- a/src/render/renderstates/qstencilmask.cpp +++ b/src/render/renderstates/qstencilmask.cpp @@ -54,6 +54,11 @@ QStencilMask::QStencilMask(QNode *parent) { } +/*! \internal */ +QStencilMask::~QStencilMask() +{ +} + void QStencilMask::setFrontOutputMask(uint mask) { Q_D(QStencilMask); diff --git a/src/render/renderstates/qstencilmask.h b/src/render/renderstates/qstencilmask.h index f6214f508..e0487c4f3 100644 --- a/src/render/renderstates/qstencilmask.h +++ b/src/render/renderstates/qstencilmask.h @@ -55,6 +55,7 @@ class QT3DRENDERSHARED_EXPORT QStencilMask : public QRenderState Q_PROPERTY(uint backOutputMask READ backOutputMask WRITE setBackOutputMask NOTIFY backOutputMaskChanged) public: explicit QStencilMask(Qt3DCore::QNode *parent = nullptr); + ~QStencilMask(); uint frontOutputMask() const; uint backOutputMask() const; diff --git a/src/render/renderstates/qstenciloperation.cpp b/src/render/renderstates/qstenciloperation.cpp index 78281a8b3..cec14c041 100644 --- a/src/render/renderstates/qstenciloperation.cpp +++ b/src/render/renderstates/qstenciloperation.cpp @@ -51,6 +51,11 @@ QStencilOperation::QStencilOperation(QNode *parent) { } +/*! \internal */ +QStencilOperation::~QStencilOperation() +{ +} + QStencilOperationArguments *QStencilOperation::front() const { Q_D(const QStencilOperation); diff --git a/src/render/renderstates/qstenciloperation.h b/src/render/renderstates/qstenciloperation.h index 9d360a0e2..8a8491f59 100644 --- a/src/render/renderstates/qstenciloperation.h +++ b/src/render/renderstates/qstenciloperation.h @@ -57,6 +57,7 @@ class QT3DRENDERSHARED_EXPORT QStencilOperation : public QRenderState public: explicit QStencilOperation(Qt3DCore::QNode *parent = nullptr); + ~QStencilOperation(); QStencilOperationArguments *front() const; QStencilOperationArguments *back() const; diff --git a/src/render/renderstates/qstenciltest.cpp b/src/render/renderstates/qstenciltest.cpp index 21cf66d8a..649a78066 100644 --- a/src/render/renderstates/qstenciltest.cpp +++ b/src/render/renderstates/qstenciltest.cpp @@ -52,6 +52,11 @@ QStencilTest::QStencilTest(QNode *parent) { } +/*! \internal */ +QStencilTest::~QStencilTest() +{ +} + QStencilTestArguments *QStencilTest::front() const { Q_D(const QStencilTest); diff --git a/src/render/renderstates/qstenciltest.h b/src/render/renderstates/qstenciltest.h index c3c7af303..894a4f561 100644 --- a/src/render/renderstates/qstenciltest.h +++ b/src/render/renderstates/qstenciltest.h @@ -57,6 +57,7 @@ class QT3DRENDERSHARED_EXPORT QStencilTest : public QRenderState Q_PROPERTY(Qt3DRender::QStencilTestArguments *back READ back CONSTANT) public: explicit QStencilTest(Qt3DCore::QNode *parent = nullptr); + ~QStencilTest(); QStencilTestArguments *front() const; QStencilTestArguments *back() const; |