summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--dist/changes-5.13.018
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-index.qdoc4
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization.qdoc2
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp38
-rw-r--r--src/datavisualization/engine/abstract3drenderer_p.h5
-rw-r--r--src/datavisualization/engine/axisrendercache.cpp2
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp16
-rw-r--r--src/datavisualization/engine/bars3drenderer_p.h1
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp21
-rw-r--r--src/datavisualization/engine/scatter3drenderer_p.h1
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp25
-rw-r--r--src/datavisualization/engine/surface3drenderer_p.h1
-rw-r--r--src/datavisualization/utils/utils.cpp4
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2.pro2
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2_plugin.cpp2
-rw-r--r--src/datavisualizationqml2/plugins.qmltypes4
-rw-r--r--tests/manual/volumetrictest/volumetrictest.cpp4
18 files changed, 81 insertions, 71 deletions
diff --git a/.qmake.conf b/.qmake.conf
index 1acd1397..a8f1baef 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,5 +1,5 @@
load(qt_build_config)
-MODULE_VERSION = 5.12.4
+MODULE_VERSION = 5.13.0
CONFIG += warning_clean
CMAKE_MODULE_TESTS=-
diff --git a/dist/changes-5.13.0 b/dist/changes-5.13.0
new file mode 100644
index 00000000..ebb4be18
--- /dev/null
+++ b/dist/changes-5.13.0
@@ -0,0 +1,18 @@
+Qt 5.13 introduces many new features and improvements as well as bugfixes
+over the 5.12.x series. For more details, refer to the online documentation
+included in this distribution. The documentation is also available online:
+
+https://doc.qt.io/qt-5/index.html
+
+The Qt version 5.13 series is binary compatible with the 5.12.x series.
+Applications compiled for 5.12 will continue to run with 5.13.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+ - This release contains only minor code improvements.
diff --git a/src/datavisualization/doc/src/qtdatavisualization-index.qdoc b/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
index fdb9b5b0..44049bf3 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
@@ -45,7 +45,9 @@
To import Qt Data Visualization QML types, add the following import statement to your \c .qml
file:
- \snippet doc_src_qmldatavisualization.cpp 0
+ \qml \QtMinorVersion
+ import QtDataVisualization 1.\1
+ \endqml
If you intend to use Qt Data Visualization C++ classes in your application, use the
following include and using directives:
diff --git a/src/datavisualization/doc/src/qtdatavisualization.qdoc b/src/datavisualization/doc/src/qtdatavisualization.qdoc
index db9ca24e..5ee8cd87 100644
--- a/src/datavisualization/doc/src/qtdatavisualization.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization.qdoc
@@ -45,7 +45,7 @@
*/
/*!
- \qmlmodule QtDataVisualization 1.2
+ \qmlmodule QtDataVisualization 1.\QtMinorVersion
\title Qt Data Visualization QML Types
\ingroup qmlmodules
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 417be0e8..3a6a524f 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -122,7 +122,6 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller)
m_funcs_2_1(0),
#endif
m_context(0),
- m_dummySurfaceAtDelete(0),
m_isOpenGLES(true)
{
@@ -153,6 +152,7 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller)
Abstract3DRenderer::~Abstract3DRenderer()
{
+ contextCleanup();
delete m_drawer;
delete m_cachedScene;
delete m_cachedTheme;
@@ -186,18 +186,18 @@ Abstract3DRenderer::~Abstract3DRenderer()
if (m_textureHelper) {
m_textureHelper->deleteTexture(&m_depthTexture);
m_textureHelper->deleteTexture(&m_cursorPositionTexture);
-
- if (QOpenGLContext::currentContext())
- m_textureHelper->glDeleteFramebuffers(1, &m_cursorPositionFrameBuffer);
-
delete m_textureHelper;
}
m_axisCacheX.clearLabels();
m_axisCacheY.clearLabels();
m_axisCacheZ.clearLabels();
+}
- restoreContextAfterDelete();
+void Abstract3DRenderer::contextCleanup()
+{
+ if (QOpenGLContext::currentContext())
+ m_textureHelper->glDeleteFramebuffers(1, &m_cursorPositionFrameBuffer);
}
void Abstract3DRenderer::initializeOpenGL()
@@ -233,6 +233,9 @@ void Abstract3DRenderer::initializeOpenGL()
loadLabelMesh();
loadPositionMapperMesh();
+
+ QObject::connect(m_context, &QOpenGLContext::aboutToBeDestroyed,
+ this, &Abstract3DRenderer::contextCleanup);
}
void Abstract3DRenderer::render(const GLuint defaultFboHandle)
@@ -1814,29 +1817,6 @@ void Abstract3DRenderer::queriedGraphPosition(const QMatrix4x4 &projectionViewMa
m_graphPositionQueryPending = false;
}
-void Abstract3DRenderer::fixContextBeforeDelete()
-{
- // Only need to fix context if the current context is null.
- // Otherwise we expect it to be our shared context, so we can use it for cleanup.
- if (!QOpenGLContext::currentContext() && !m_context.isNull()
- && QThread::currentThread() == this->thread()) {
- m_dummySurfaceAtDelete = new QOffscreenSurface();
- m_dummySurfaceAtDelete->setFormat(m_context->format());
- m_dummySurfaceAtDelete->create();
-
- m_context->makeCurrent(m_dummySurfaceAtDelete);
- }
-}
-
-void Abstract3DRenderer::restoreContextAfterDelete()
-{
- if (m_dummySurfaceAtDelete)
- m_context->doneCurrent();
-
- delete m_dummySurfaceAtDelete;
- m_dummySurfaceAtDelete = 0;
-}
-
void Abstract3DRenderer::calculatePolarXZ(const QVector3D &dataPos, float &x, float &z) const
{
// x is angular, z is radial
diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h
index c312b771..d6ffb03c 100644
--- a/src/datavisualization/engine/abstract3drenderer_p.h
+++ b/src/datavisualization/engine/abstract3drenderer_p.h
@@ -191,6 +191,7 @@ Q_SIGNALS:
protected:
Abstract3DRenderer(Abstract3DController *controller);
+ virtual void contextCleanup();
virtual void initializeOpenGL();
void reInitShaders();
@@ -242,9 +243,6 @@ protected:
void queriedGraphPosition(const QMatrix4x4 &projectionViewMatrix, const QVector3D &scaling,
GLuint defaultFboHandle);
- void fixContextBeforeDelete();
- void restoreContextAfterDelete();
-
bool m_hasNegativeValues;
Q3DTheme *m_cachedTheme;
Drawer *m_drawer;
@@ -339,7 +337,6 @@ protected:
QOpenGLFunctions_2_1 *m_funcs_2_1; // Not owned
#endif
QPointer<QOpenGLContext> m_context; // Not owned
- QOffscreenSurface *m_dummySurfaceAtDelete;
bool m_isOpenGLES;
private:
diff --git a/src/datavisualization/engine/axisrendercache.cpp b/src/datavisualization/engine/axisrendercache.cpp
index 1c5913d1..06f6d9eb 100644
--- a/src/datavisualization/engine/axisrendercache.cpp
+++ b/src/datavisualization/engine/axisrendercache.cpp
@@ -201,7 +201,7 @@ int AxisRenderCache::maxLabelWidth(const QStringList &labels) const
labelFont.setPointSize(textureFontSize);
QFontMetrics labelFM(labelFont);
for (int i = 0; i < labels.size(); i++) {
- int newWidth = labelFM.width(labels.at(i));
+ int newWidth = labelFM.horizontalAdvance(labels.at(i));
if (labelWidth < newWidth)
labelWidth = newWidth;
}
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index e8f96c87..c57339db 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -100,8 +100,16 @@ Bars3DRenderer::Bars3DRenderer(Bars3DController *controller)
Bars3DRenderer::~Bars3DRenderer()
{
- fixContextBeforeDelete();
+ contextCleanup();
+ delete m_barShader;
+ delete m_barGradientShader;
+ delete m_depthShader;
+ delete m_selectionShader;
+ delete m_backgroundShader;
+}
+void Bars3DRenderer::contextCleanup()
+{
if (QOpenGLContext::currentContext()) {
m_textureHelper->glDeleteFramebuffers(1, &m_selectionFrameBuffer);
m_textureHelper->glDeleteRenderbuffers(1, &m_selectionDepthBuffer);
@@ -109,12 +117,6 @@ Bars3DRenderer::~Bars3DRenderer()
m_textureHelper->glDeleteFramebuffers(1, &m_depthFrameBuffer);
m_textureHelper->deleteTexture(&m_bgrTexture);
}
-
- delete m_barShader;
- delete m_barGradientShader;
- delete m_depthShader;
- delete m_selectionShader;
- delete m_backgroundShader;
}
void Bars3DRenderer::initializeOpenGL()
diff --git a/src/datavisualization/engine/bars3drenderer_p.h b/src/datavisualization/engine/bars3drenderer_p.h
index f48731fd..0dad7dc3 100644
--- a/src/datavisualization/engine/bars3drenderer_p.h
+++ b/src/datavisualization/engine/bars3drenderer_p.h
@@ -134,6 +134,7 @@ public:
void updateMargin(float margin);
protected:
+ void contextCleanup();
virtual void initializeOpenGL();
virtual void fixCameraTarget(QVector3D &target);
virtual void getVisibleItemBounds(QVector3D &minBounds, QVector3D &maxBounds);
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp
index 8df8f4ea..fbf2b2cf 100644
--- a/src/datavisualization/engine/scatter3drenderer.cpp
+++ b/src/datavisualization/engine/scatter3drenderer.cpp
@@ -87,15 +87,7 @@ Scatter3DRenderer::Scatter3DRenderer(Scatter3DController *controller)
Scatter3DRenderer::~Scatter3DRenderer()
{
- fixContextBeforeDelete();
-
- if (QOpenGLContext::currentContext()) {
- m_textureHelper->glDeleteFramebuffers(1, &m_selectionFrameBuffer);
- m_textureHelper->glDeleteRenderbuffers(1, &m_selectionDepthBuffer);
- m_textureHelper->deleteTexture(&m_selectionTexture);
- m_textureHelper->glDeleteFramebuffers(1, &m_depthFrameBuffer);
- m_textureHelper->deleteTexture(&m_bgrTexture);
- }
+ contextCleanup();
delete m_dotShader;
delete m_staticSelectedItemGradientShader;
delete m_staticSelectedItemShader;
@@ -106,6 +98,17 @@ Scatter3DRenderer::~Scatter3DRenderer()
delete m_staticGradientPointShader;
}
+void Scatter3DRenderer::contextCleanup()
+{
+ if (QOpenGLContext::currentContext()) {
+ m_textureHelper->glDeleteFramebuffers(1, &m_selectionFrameBuffer);
+ m_textureHelper->glDeleteRenderbuffers(1, &m_selectionDepthBuffer);
+ m_textureHelper->deleteTexture(&m_selectionTexture);
+ m_textureHelper->glDeleteFramebuffers(1, &m_depthFrameBuffer);
+ m_textureHelper->deleteTexture(&m_bgrTexture);
+ }
+}
+
void Scatter3DRenderer::initializeOpenGL()
{
Abstract3DRenderer::initializeOpenGL();
diff --git a/src/datavisualization/engine/scatter3drenderer_p.h b/src/datavisualization/engine/scatter3drenderer_p.h
index 52a9b427..b54571db 100644
--- a/src/datavisualization/engine/scatter3drenderer_p.h
+++ b/src/datavisualization/engine/scatter3drenderer_p.h
@@ -120,6 +120,7 @@ public Q_SLOTS:
void updateSelectedItem(int index, QScatter3DSeries *series);
protected:
+ void contextCleanup();
virtual void initializeOpenGL();
virtual void fixCameraTarget(QVector3D &target);
virtual void getVisibleItemBounds(QVector3D &minBounds, QVector3D &maxBounds);
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index b6125719..be7ccf66 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -95,17 +95,7 @@ Surface3DRenderer::Surface3DRenderer(Surface3DController *controller)
Surface3DRenderer::~Surface3DRenderer()
{
- fixContextBeforeDelete();
-
- if (QOpenGLContext::currentContext()) {
- m_textureHelper->glDeleteFramebuffers(1, &m_depthFrameBuffer);
- m_textureHelper->glDeleteRenderbuffers(1, &m_selectionDepthBuffer);
- m_textureHelper->glDeleteFramebuffers(1, &m_selectionFrameBuffer);
-
- m_textureHelper->deleteTexture(&m_noShadowTexture);
- m_textureHelper->deleteTexture(&m_depthTexture);
- m_textureHelper->deleteTexture(&m_selectionResultTexture);
- }
+ contextCleanup();
delete m_depthShader;
delete m_backgroundShader;
delete m_selectionShader;
@@ -118,6 +108,19 @@ Surface3DRenderer::~Surface3DRenderer()
delete m_surfaceSliceSmoothShader;
}
+void Surface3DRenderer::contextCleanup()
+{
+ if (QOpenGLContext::currentContext()) {
+ m_textureHelper->glDeleteFramebuffers(1, &m_depthFrameBuffer);
+ m_textureHelper->glDeleteRenderbuffers(1, &m_selectionDepthBuffer);
+ m_textureHelper->glDeleteFramebuffers(1, &m_selectionFrameBuffer);
+
+ m_textureHelper->deleteTexture(&m_noShadowTexture);
+ m_textureHelper->deleteTexture(&m_depthTexture);
+ m_textureHelper->deleteTexture(&m_selectionResultTexture);
+ }
+}
+
void Surface3DRenderer::initializeOpenGL()
{
Abstract3DRenderer::initializeOpenGL();
diff --git a/src/datavisualization/engine/surface3drenderer_p.h b/src/datavisualization/engine/surface3drenderer_p.h
index 5a5398aa..5cda332f 100644
--- a/src/datavisualization/engine/surface3drenderer_p.h
+++ b/src/datavisualization/engine/surface3drenderer_p.h
@@ -116,6 +116,7 @@ public:
void render(GLuint defaultFboHandle = 0);
protected:
+ void contextCleanup();
void initializeOpenGL();
virtual void fixCameraTarget(QVector3D &target);
virtual void getVisibleItemBounds(QVector3D &minBounds, QVector3D &maxBounds);
diff --git a/src/datavisualization/utils/utils.cpp b/src/datavisualization/utils/utils.cpp
index f80cf45f..d5850d86 100644
--- a/src/datavisualization/utils/utils.cpp
+++ b/src/datavisualization/utils/utils.cpp
@@ -84,7 +84,7 @@ QImage Utils::printTextToImage(const QFont &font, const QString &text, const QCo
QFont valueFont = font;
valueFont.setPointSize(textureFontSize);
QFontMetrics valueFM(valueFont);
- int valueStrWidth = valueFM.width(text);
+ int valueStrWidth = valueFM.horizontalAdvance(text);
// ES2 needs to use maxLabelWidth always (when given) because of the power of 2 -issue.
if (maxLabelWidth && (labelBackground || Utils::isOpenGLES()))
@@ -136,7 +136,7 @@ QImage Utils::printTextToImage(const QFont &font, const QString &text, const QCo
if (maxLabelWidth && (labelBackground || Utils::isOpenGLES()))
valueStrWidth = maxLabelWidth * fontRatio;
else
- valueStrWidth = currentValueFM.width(text);
+ valueStrWidth = currentValueFM.horizontalAdvance(text);
valueStrHeight = currentValueFM.height();
valueStrWidth += paddingWidth / 2;
}
diff --git a/src/datavisualizationqml2/datavisualizationqml2.pro b/src/datavisualizationqml2/datavisualizationqml2.pro
index 41e5ffad..4c378c3b 100644
--- a/src/datavisualizationqml2/datavisualizationqml2.pro
+++ b/src/datavisualizationqml2/datavisualizationqml2.pro
@@ -45,7 +45,7 @@ HEADERS += \
glstatestore_p.h \
enumtostringmap_p.h
-IMPORT_VERSION = 1.3
+IMPORT_VERSION = 1.$$QT_MINOR_VERSION
QMAKE_QMLPLUGINDUMP_FLAGS += -defaultplatform
load(qml_plugin)
diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
index 2e1ae083..28c3666e 100644
--- a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
+++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
@@ -143,6 +143,8 @@ void QtDataVisualizationQml2Plugin::registerTypes(const char *uri)
// New revisions
qmlRegisterType<Q3DLight, 1>(uri, 1, 3, "Light3D");
+
+ qmlRegisterModule(uri, 1, QT_VERSION_MINOR);
}
QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualizationqml2/plugins.qmltypes b/src/datavisualizationqml2/plugins.qmltypes
index 24eaa92d..b4b91a81 100644
--- a/src/datavisualizationqml2/plugins.qmltypes
+++ b/src/datavisualizationqml2/plugins.qmltypes
@@ -4,10 +4,10 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -defaultplatform QtDataVisualization 1.3'
+// 'qmlplugindump -nonrelocatable -defaultplatform QtDataVisualization 1.13'
Module {
- dependencies: ["QtQuick 2.12"]
+ dependencies: ["QtQuick 2.0"]
Component {
name: "QtDataVisualization::AbstractDeclarative"
defaultProperty: "data"
diff --git a/tests/manual/volumetrictest/volumetrictest.cpp b/tests/manual/volumetrictest/volumetrictest.cpp
index 09dae433..6b2a57a8 100644
--- a/tests/manual/volumetrictest/volumetrictest.cpp
+++ b/tests/manual/volumetrictest/volumetrictest.cpp
@@ -381,7 +381,7 @@ void VolumetricModifier::createVolume()
logo.load(QStringLiteral(":/logo_no_padding.png"));
//logo.load(QStringLiteral(":/logo.png"));
qDebug() << "image dimensions:" << logo.width() << logo.height()
- << logo.byteCount() << (logo.width() * logo.height())
+ << logo.sizeInBytes() << (logo.width() * logo.height())
<< logo.bytesPerLine();
QVector<QImage *> imageArray(imageCount);
@@ -535,7 +535,7 @@ void VolumetricModifier::createAnotherVolume()
//logo.load(QStringLiteral(":/logo.png"));
logo = logo.convertToFormat(QImage::Format_ARGB8555_Premultiplied);
qDebug() << "second image dimensions:" << logo.width() << logo.height()
- << logo.byteCount() << (logo.width() * logo.height())
+ << logo.sizeInBytes() << (logo.width() * logo.height())
<< logo.bytesPerLine();
logo.save("d:/qt/goobar.png");