diff options
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"); |