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/frontend | |
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/frontend')
-rw-r--r-- | src/render/frontend/qcamera.cpp | 5 | ||||
-rw-r--r-- | src/render/frontend/qcamera.h | 1 | ||||
-rw-r--r-- | src/render/frontend/qcameralens.cpp | 5 | ||||
-rw-r--r-- | src/render/frontend/qcameralens.h | 1 | ||||
-rw-r--r-- | src/render/frontend/qcomputecommand.cpp | 5 | ||||
-rw-r--r-- | src/render/frontend/qcomputecommand.h | 2 | ||||
-rw-r--r-- | src/render/frontend/qlayer.cpp | 5 | ||||
-rw-r--r-- | src/render/frontend/qlayer.h | 1 | ||||
-rw-r--r-- | src/render/frontend/qpickingsettings.cpp | 5 | ||||
-rw-r--r-- | src/render/frontend/qpickingsettings.h | 1 | ||||
-rw-r--r-- | src/render/frontend/qrendersettings.cpp | 1 | ||||
-rw-r--r-- | src/render/frontend/qrendertarget.cpp | 5 | ||||
-rw-r--r-- | src/render/frontend/qrendertarget.h | 1 | ||||
-rw-r--r-- | src/render/frontend/qrendertargetoutput.cpp | 5 | ||||
-rw-r--r-- | src/render/frontend/qrendertargetoutput.h | 1 |
15 files changed, 43 insertions, 1 deletions
diff --git a/src/render/frontend/qcamera.cpp b/src/render/frontend/qcamera.cpp index eac334240..f73960c77 100644 --- a/src/render/frontend/qcamera.cpp +++ b/src/render/frontend/qcamera.cpp @@ -87,6 +87,11 @@ QCamera::QCamera(Qt3DCore::QNode *parent) } /*! \internal */ +QCamera::~QCamera() +{ +} + +/*! \internal */ QCamera::QCamera(QCameraPrivate &dd, Qt3DCore::QNode *parent) : Qt3DCore::QEntity(dd, parent) { diff --git a/src/render/frontend/qcamera.h b/src/render/frontend/qcamera.h index 3b7bf95b9..73ab05cca 100644 --- a/src/render/frontend/qcamera.h +++ b/src/render/frontend/qcamera.h @@ -81,6 +81,7 @@ class QT3DRENDERSHARED_EXPORT QCamera : public Qt3DCore::QEntity public: explicit QCamera(QNode *parent = nullptr); + ~QCamera(); enum CameraTranslationOption { TranslateViewCenter, diff --git a/src/render/frontend/qcameralens.cpp b/src/render/frontend/qcameralens.cpp index c86610f3d..3f7a9f4f7 100644 --- a/src/render/frontend/qcameralens.cpp +++ b/src/render/frontend/qcameralens.cpp @@ -68,6 +68,11 @@ QCameraLens::QCameraLens(QNode *parent) d->updateProjectionMatrix(); } +/*! \internal */ +QCameraLens::~QCameraLens() +{ +} + /*! \class Qt3DRender::QCameraLens * \inmodule Qt3DCore * diff --git a/src/render/frontend/qcameralens.h b/src/render/frontend/qcameralens.h index f719aff3d..6739369dc 100644 --- a/src/render/frontend/qcameralens.h +++ b/src/render/frontend/qcameralens.h @@ -69,6 +69,7 @@ class QT3DRENDERSHARED_EXPORT QCameraLens : public Qt3DCore::QComponent public: explicit QCameraLens(QNode *parent = nullptr); + ~QCameraLens(); enum ProjectionType { OrthographicProjection, diff --git a/src/render/frontend/qcomputecommand.cpp b/src/render/frontend/qcomputecommand.cpp index 2e1ea7421..0c1403169 100644 --- a/src/render/frontend/qcomputecommand.cpp +++ b/src/render/frontend/qcomputecommand.cpp @@ -57,6 +57,11 @@ QComputeCommand::QComputeCommand(Qt3DCore::QNode *parent) { } +/*! \internal */ +QComputeCommand::~QComputeCommand() +{ +} + int QComputeCommand::workGroupX() const { Q_D(const QComputeCommand); diff --git a/src/render/frontend/qcomputecommand.h b/src/render/frontend/qcomputecommand.h index e497574d0..6bc31c6f6 100644 --- a/src/render/frontend/qcomputecommand.h +++ b/src/render/frontend/qcomputecommand.h @@ -57,8 +57,8 @@ class QT3DRENDERSHARED_EXPORT QComputeCommand : public Qt3DCore::QComponent Q_PROPERTY(int workGroupZ READ workGroupZ WRITE setWorkGroupZ NOTIFY workGroupZChanged) public: - explicit QComputeCommand(Qt3DCore::QNode *parent = nullptr); + ~QComputeCommand(); int workGroupX() const; int workGroupY() const; diff --git a/src/render/frontend/qlayer.cpp b/src/render/frontend/qlayer.cpp index 47a0ffa35..e9f23a015 100644 --- a/src/render/frontend/qlayer.cpp +++ b/src/render/frontend/qlayer.cpp @@ -75,6 +75,11 @@ QLayer::QLayer(QNode *parent) } /*! \internal */ +QLayer::~QLayer() +{ +} + +/*! \internal */ QLayer::QLayer(QLayerPrivate &dd, QNode *parent) : QComponent(dd, parent) { diff --git a/src/render/frontend/qlayer.h b/src/render/frontend/qlayer.h index b45e5f8cf..f44685d7e 100644 --- a/src/render/frontend/qlayer.h +++ b/src/render/frontend/qlayer.h @@ -55,6 +55,7 @@ class QT3DRENDERSHARED_EXPORT QLayer : public Qt3DCore::QComponent Q_OBJECT public: explicit QLayer(Qt3DCore::QNode *parent = nullptr); + ~QLayer(); protected: explicit QLayer(QLayerPrivate &dd, Qt3DCore::QNode *parent = nullptr); diff --git a/src/render/frontend/qpickingsettings.cpp b/src/render/frontend/qpickingsettings.cpp index abb6115cb..a8bf38353 100644 --- a/src/render/frontend/qpickingsettings.cpp +++ b/src/render/frontend/qpickingsettings.cpp @@ -56,6 +56,11 @@ QPickingSettings::QPickingSettings(Qt3DCore::QNode *parent) { } +/*! \internal */ +QPickingSettings::~QPickingSettings() +{ +} + QPickingSettings::QPickingSettings(QPickingSettingsPrivate &dd, Qt3DCore::QNode *parent) : Qt3DCore::QNode(dd, parent) { diff --git a/src/render/frontend/qpickingsettings.h b/src/render/frontend/qpickingsettings.h index 8b765a4ad..a530a4b33 100644 --- a/src/render/frontend/qpickingsettings.h +++ b/src/render/frontend/qpickingsettings.h @@ -57,6 +57,7 @@ class QT3DRENDERSHARED_EXPORT QPickingSettings : public Qt3DCore::QNode public: explicit QPickingSettings(Qt3DCore::QNode *parent = nullptr); + ~QPickingSettings(); enum PickMethod { BoundingVolumePicking, diff --git a/src/render/frontend/qrendersettings.cpp b/src/render/frontend/qrendersettings.cpp index 9ae1d7b51..a6e4a99eb 100644 --- a/src/render/frontend/qrendersettings.cpp +++ b/src/render/frontend/qrendersettings.cpp @@ -81,6 +81,7 @@ QRenderSettings::QRenderSettings(QRenderSettingsPrivate &dd, Qt3DCore::QNode *pa d->init(); } +/*! \internal */ QRenderSettings::~QRenderSettings() { } diff --git a/src/render/frontend/qrendertarget.cpp b/src/render/frontend/qrendertarget.cpp index 9a0b079d9..0157a16f0 100644 --- a/src/render/frontend/qrendertarget.cpp +++ b/src/render/frontend/qrendertarget.cpp @@ -61,6 +61,11 @@ QRenderTarget::QRenderTarget(QNode *parent) } /*! \internal */ +QRenderTarget::~QRenderTarget() +{ +} + +/*! \internal */ QRenderTarget::QRenderTarget(QRenderTargetPrivate &dd, QNode *parent) : QComponent(dd, parent) { diff --git a/src/render/frontend/qrendertarget.h b/src/render/frontend/qrendertarget.h index a7bba422b..cb0edde51 100644 --- a/src/render/frontend/qrendertarget.h +++ b/src/render/frontend/qrendertarget.h @@ -55,6 +55,7 @@ class QT3DRENDERSHARED_EXPORT QRenderTarget : public Qt3DCore::QComponent Q_OBJECT public: explicit QRenderTarget(Qt3DCore::QNode *parent = nullptr); + ~QRenderTarget(); void addOutput(QRenderTargetOutput *output); void removeOutput(QRenderTargetOutput *output); diff --git a/src/render/frontend/qrendertargetoutput.cpp b/src/render/frontend/qrendertargetoutput.cpp index bfa51957f..75bf1ab91 100644 --- a/src/render/frontend/qrendertargetoutput.cpp +++ b/src/render/frontend/qrendertargetoutput.cpp @@ -62,6 +62,11 @@ QRenderTargetOutput::QRenderTargetOutput(QNode *parent) } /*! \internal */ +QRenderTargetOutput::~QRenderTargetOutput() +{ +} + +/*! \internal */ QRenderTargetOutput::QRenderTargetOutput(QRenderTargetOutputPrivate &dd, QNode *parent) : QNode(dd, parent) { diff --git a/src/render/frontend/qrendertargetoutput.h b/src/render/frontend/qrendertargetoutput.h index 15a6f7321..1f78dd279 100644 --- a/src/render/frontend/qrendertargetoutput.h +++ b/src/render/frontend/qrendertargetoutput.h @@ -85,6 +85,7 @@ public: Q_ENUM(AttachmentPoint) explicit QRenderTargetOutput(Qt3DCore::QNode *parent = nullptr); + ~QRenderTargetOutput(); AttachmentPoint attachmentPoint() const; QAbstractTexture *texture() const; |