summaryrefslogtreecommitdiffstats
path: root/src/render/renderstates
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2019-08-27 09:12:00 +0200
committerMarc Mutz <marc.mutz@kdab.com>2019-08-28 07:25:56 +0200
commit61d23410b0637d8e17efd195addd8fc6078c88cd (patch)
tree57dd45791a3f4bb59a2830b2681b5148e9599e05 /src/render/renderstates
parenta1ec8d49aac3830194f37f5ec95acdb93aad3aad (diff)
QRasterMode: de-inline dtor
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. Fixes: QTBUG-77860 Change-Id: I4b2a1f0627032aa6e714166b91a9898b592b4eb8 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/renderstates')
-rw-r--r--src/render/renderstates/qrastermode.cpp6
-rw-r--r--src/render/renderstates/qrastermode.h2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/render/renderstates/qrastermode.cpp b/src/render/renderstates/qrastermode.cpp
index 065a1ca8c..fc255b717 100644
--- a/src/render/renderstates/qrastermode.cpp
+++ b/src/render/renderstates/qrastermode.cpp
@@ -50,6 +50,12 @@ QRasterMode::QRasterMode(QNode *parent)
{
}
+/*!
+ \internal
+*/
+QRasterMode::~QRasterMode()
+ = default;
+
QRasterMode::RasterMode QRasterMode::rasterMode() const
{
Q_D(const QRasterMode);
diff --git a/src/render/renderstates/qrastermode.h b/src/render/renderstates/qrastermode.h
index d9eb5cb05..d460fa10c 100644
--- a/src/render/renderstates/qrastermode.h
+++ b/src/render/renderstates/qrastermode.h
@@ -71,7 +71,7 @@ public:
Q_ENUM(FaceMode) // LCOV_EXCL_LINE
explicit QRasterMode(Qt3DCore::QNode *parent = nullptr);
- ~QRasterMode() = default;
+ ~QRasterMode();
RasterMode rasterMode() const;
FaceMode faceMode() const;