summaryrefslogtreecommitdiffstats
path: root/src/render/frontend
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-05-14 08:52:45 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-05-19 07:03:19 +0000
commit6f6207fadc1a334d1aed98f840a0d074acf18d06 (patch)
tree083bf49b4d6bc999f099b3c1e2897cb23cb89887 /src/render/frontend
parent72f2c87d15c76cc861699aea536e01bc8d56c8f2 (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.cpp5
-rw-r--r--src/render/frontend/qcamera.h1
-rw-r--r--src/render/frontend/qcameralens.cpp5
-rw-r--r--src/render/frontend/qcameralens.h1
-rw-r--r--src/render/frontend/qcomputecommand.cpp5
-rw-r--r--src/render/frontend/qcomputecommand.h2
-rw-r--r--src/render/frontend/qlayer.cpp5
-rw-r--r--src/render/frontend/qlayer.h1
-rw-r--r--src/render/frontend/qpickingsettings.cpp5
-rw-r--r--src/render/frontend/qpickingsettings.h1
-rw-r--r--src/render/frontend/qrendersettings.cpp1
-rw-r--r--src/render/frontend/qrendertarget.cpp5
-rw-r--r--src/render/frontend/qrendertarget.h1
-rw-r--r--src/render/frontend/qrendertargetoutput.cpp5
-rw-r--r--src/render/frontend/qrendertargetoutput.h1
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;