diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-11-23 09:06:01 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2021-01-11 11:48:21 +0000 |
commit | 8a6b7a377d7cada0f4d98b35d2ac28f7e70aff83 (patch) | |
tree | edceb036960770772b50feb9fe64959d8583d69f | |
parent | ac9c708d7a34e66922056e5bca84b3cf583d61eb (diff) |
Update QtQuick API to build with 5.15
Haven't tried to run anything, it just builds
Change-Id: I6c2c2a949bc3892a363697cf38f1608af87c303c
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
20 files changed, 91 insertions, 9 deletions
diff --git a/examples/qt3d/scene2d/main.cpp b/examples/qt3d/scene2d/main.cpp index 4981ae2fd..04c4ac58c 100644 --- a/examples/qt3d/scene2d/main.cpp +++ b/examples/qt3d/scene2d/main.cpp @@ -55,7 +55,6 @@ int main(int argc, char **argv) { QGuiApplication app(argc, argv); - QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGLRhi); Qt3DExtras::Quick::Qt3DQuickWindow view; view.setSource(QUrl("qrc:/main.qml")); view.resize(1400, 1100); diff --git a/src/quick3d/imports/scene3d/scene3drenderer.cpp b/src/quick3d/imports/scene3d/scene3drenderer.cpp index c32ea7364..0eb0a94b3 100644 --- a/src/quick3d/imports/scene3d/scene3drenderer.cpp +++ b/src/quick3d/imports/scene3d/scene3drenderer.cpp @@ -45,7 +45,9 @@ #include <qopenglcontext.h> #include <qopenglframebufferobject.h> #include <QtQuick/qquickwindow.h> +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include <private/qrhi_p.h> +#endif #include <Qt3DRender/private/qrenderaspect_p.h> #include <Qt3DRender/private/abstractrenderer_p.h> @@ -161,10 +163,12 @@ void Scene3DRenderer::init(Qt3DCore::QAspectEngine *aspectEngine, Qt3DRender::QRenderAspectPrivate *aspectPriv = static_cast<QRenderAspectPrivate*>(QRenderAspectPrivate::get(m_renderAspect)); Qt3DRender::Render::AbstractRenderer *renderer = aspectPriv->m_renderer; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) const bool isRHI = renderer->api() == API::RHI; if (isRHI) m_quickRenderer = new Scene3DRenderer::RHIRenderer; else +#endif m_quickRenderer = new Scene3DRenderer::GLRenderer; m_quickRenderer->initialize(this, renderer); } @@ -337,7 +341,12 @@ void Scene3DRenderer::GLRenderer::beforeSynchronize(Scene3DRenderer *scene3DRend if (generateNewTexture) { m_finalFBO.reset(createFramebufferObject(m_lastSize)); m_textureId = m_finalFBO->texture(); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) m_texture.reset(QNativeInterface::QSGOpenGLTexture::fromNative(m_textureId, window, m_finalFBO->size(), QQuickWindow::TextureHasAlphaChannel)); +#else + m_texture.reset(window->createTextureFromNativeObject(QQuickWindow::NativeObjectTexture, (void*) m_textureId, + 0, m_finalFBO->size(), QQuickWindow::TextureHasAlphaChannel)); +#endif } // Set texture on node @@ -423,6 +432,8 @@ void Scene3DRenderer::GLRenderer::shutdown(Scene3DRenderer *sceneRenderer) m_multisampledFBO.reset(); } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + void Scene3DRenderer::RHIRenderer::initialize(Scene3DRenderer *scene3DRenderer, Qt3DRender::Render::AbstractRenderer *renderer) { @@ -626,6 +637,8 @@ void Scene3DRenderer::RHIRenderer::releaseRHIResources() m_rhiRenderTargetPassDescriptor = nullptr; } +#endif + Scene3DRenderer::QuickRenderer::QuickRenderer() {} Scene3DRenderer::QuickRenderer::~QuickRenderer() {} diff --git a/src/quick3d/imports/scene3d/scene3drenderer_p.h b/src/quick3d/imports/scene3d/scene3drenderer_p.h index a279f2a63..c7f1fca2c 100644 --- a/src/quick3d/imports/scene3d/scene3drenderer_p.h +++ b/src/quick3d/imports/scene3d/scene3drenderer_p.h @@ -159,6 +159,7 @@ private: quint32 m_textureId = 0; }; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) class RHIRenderer : public QuickRenderer { public: @@ -181,6 +182,7 @@ private: QRhiRenderPassDescriptor *m_rhiRenderTargetPassDescriptor = nullptr; QRhi *m_rhi = nullptr; }; +#endif Qt3DCore::QAspectEngine *m_aspectEngine; // Will be released by the Scene3DItem QRenderAspect *m_renderAspect; // Will be released by the aspectEngine diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterial.cpp b/src/quick3d/imports/scene3d/scene3dsgmaterial.cpp index 74d4c6c09..dd2f4b712 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterial.cpp +++ b/src/quick3d/imports/scene3d/scene3dsgmaterial.cpp @@ -64,13 +64,18 @@ Scene3DSGMaterial::Scene3DSGMaterial() { } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QSGMaterialShader *Scene3DSGMaterial::createShader(QSGRendererInterface::RenderMode renderMode) const +#else +QSGMaterialShader *Scene3DSGMaterial::createShader() const +#endif { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) Q_UNUSED(renderMode); +#endif return new Scene3DSGMaterialShader(); } - } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h b/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h index bb835ddf5..940c9da84 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h +++ b/src/quick3d/imports/scene3d/scene3dsgmaterial_p.h @@ -73,7 +73,11 @@ public: QSGTexture *texture() const noexcept { return m_texture; } QSGMaterialType *type() const final { return &Scene3DSGMaterialShader::type; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const final; +#else + QSGMaterialShader *createShader() const final; +#endif void show() { m_visible = true; } bool visible() const { return m_visible; } diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp b/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp index 955bcbfc3..4f5e12208 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp +++ b/src/quick3d/imports/scene3d/scene3dsgmaterialshader.cpp @@ -78,10 +78,13 @@ Scene3DSGMaterialShader::Scene3DSGMaterialShader() // Generated with qsb, we target all GL version Qt3D can handle // qsb -b --glsl "460,450,440,430,420,410,400,330,150,120,320 es,300 es,100 es" --hlsl 50 --msl 12 -o scene3dmaterial.vert.qsb scene3dmaterial.vert // qsb --glsl "460,450,440,430,420,410,400,330,150,120,320 es,300 es,100 es" --hlsl 50 --msl 12 -o scene3dmaterial.frag.qsb scene3dmaterial.frag +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) setShaderFileName(VertexStage, QLatin1String(":/shaders/scene3dmaterial.vert.qsb")); setShaderFileName(FragmentStage, QLatin1String(":/shaders/scene3dmaterial.frag.qsb")); +#endif } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) bool Scene3DSGMaterialShader::updateUniformData(QSGMaterialShader::RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) @@ -151,6 +154,15 @@ void Scene3DSGMaterialShader::updateSampledImage(QSGMaterialShader::RenderState } } +#else + +const char * const *Qt3DRender::Scene3DSGMaterialShader::attributeNames() const +{ + return nullptr; +} + +#endif + } // namespace Qt3DRender QT_END_NAMESPACE diff --git a/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h b/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h index c4b483625..942ffba39 100644 --- a/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h +++ b/src/quick3d/imports/scene3d/scene3dsgmaterialshader_p.h @@ -65,8 +65,12 @@ public: protected: // QSGMaterialShader interface +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) bool updateUniformData(RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) final; void updateSampledImage(RenderState &state, int binding, QSGTexture **texture, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) final; +#else + char const *const *attributeNames() const final; +#endif }; } // namespace Qt3DRender diff --git a/src/quick3d/quick3d/items/quick3dbuffer.cpp b/src/quick3d/quick3d/items/quick3dbuffer.cpp index dd2c4dca4..159eb1017 100644 --- a/src/quick3d/quick3d/items/quick3dbuffer.cpp +++ b/src/quick3d/quick3d/items/quick3dbuffer.cpp @@ -71,7 +71,11 @@ QByteArray Quick3DBuffer::convertToRawData(const QJSValue &jsValue) Q_ASSERT(m_v4engine); QV4::Scope scope(m_v4engine); QV4::Scoped<QV4::TypedArray> typedArray(scope, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QJSValuePrivate::convertToReturnedValue(m_v4engine, jsValue)); +#else + QJSValuePrivate::convertedToValue(m_v4engine, jsValue)); +#endif if (!typedArray) return QByteArray(); diff --git a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp index 2d5d9b131..7fbcd86c6 100644 --- a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp +++ b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp @@ -196,7 +196,7 @@ void Quick3DNodeInstantiatorPrivate::_q_modelUpdated(const QQmlChangeSet &change } else { while (count--) { QObject *obj = m_objects.at(index); - m_objects.remove(index); + m_objects.removeAt(index); emit q->objectRemoved(index, obj); if (obj) m_instanceModel->release(obj); diff --git a/src/quick3d/quick3d/qt3dquicknodefactory.cpp b/src/quick3d/quick3d/qt3dquicknodefactory.cpp index 87069a10e..eab5114b9 100644 --- a/src/quick3d/quick3d/qt3dquicknodefactory.cpp +++ b/src/quick3d/quick3d/qt3dquicknodefactory.cpp @@ -64,7 +64,11 @@ QNode *QuickNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3d/quick3d.pro b/src/quick3d/quick3d/quick3d.pro index befe45c25..1a9705b72 100644 --- a/src/quick3d/quick3d/quick3d.pro +++ b/src/quick3d/quick3d/quick3d.pro @@ -2,6 +2,7 @@ TARGET = Qt3DQuick MODULE = 3dquick QT += core-private gui-private qml qml-private quick quick-private 3dcore 3dcore-private +CONFIG += c++17 gcov { QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage diff --git a/src/quick3d/quick3danimation/qt3dquickanimationnodefactory.cpp b/src/quick3d/quick3danimation/qt3dquickanimationnodefactory.cpp index b31b3048e..5dc1bfc2e 100644 --- a/src/quick3d/quick3danimation/qt3dquickanimationnodefactory.cpp +++ b/src/quick3d/quick3danimation/qt3dquickanimationnodefactory.cpp @@ -64,7 +64,11 @@ Qt3DCore::QNode *QuickAnimationNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3dextras/qt3dquickextrasnodefactory.cpp b/src/quick3d/quick3dextras/qt3dquickextrasnodefactory.cpp index 8897a6b75..65c801a09 100644 --- a/src/quick3d/quick3dextras/qt3dquickextrasnodefactory.cpp +++ b/src/quick3d/quick3dextras/qt3dquickextrasnodefactory.cpp @@ -64,7 +64,11 @@ Qt3DCore::QNode *QuickExtrasNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3dinput/qt3dquickinputnodefactory.cpp b/src/quick3d/quick3dinput/qt3dquickinputnodefactory.cpp index 8b2e4d557..cc69f6012 100644 --- a/src/quick3d/quick3dinput/qt3dquickinputnodefactory.cpp +++ b/src/quick3d/quick3dinput/qt3dquickinputnodefactory.cpp @@ -64,7 +64,11 @@ Qt3DCore::QNode *QuickInputNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3drender/qt3dquickrendernodefactory.cpp b/src/quick3d/quick3drender/qt3dquickrendernodefactory.cpp index f146bbe4e..bfee36429 100644 --- a/src/quick3d/quick3drender/qt3dquickrendernodefactory.cpp +++ b/src/quick3d/quick3drender/qt3dquickrendernodefactory.cpp @@ -64,7 +64,11 @@ Qt3DCore::QNode *QuickRenderNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/src/quick3d/quick3dscene2d/items/scene2d.cpp b/src/quick3d/quick3dscene2d/items/scene2d.cpp index bee6c5ca5..719adcc07 100644 --- a/src/quick3d/quick3dscene2d/items/scene2d.cpp +++ b/src/quick3d/quick3dscene2d/items/scene2d.cpp @@ -43,7 +43,9 @@ #include <QtCore/qatomic.h> #include <QtGui/qevent.h> #include <QtGui/QOpenGLFunctions> +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include <QQuickRenderTarget> +#endif #include <private/qscene2d_p.h> #include <private/scene2d_p.h> @@ -245,7 +247,11 @@ void Scene2D::initializeRender() m_context->create(); m_context->makeCurrent(m_sharedObject->m_surface); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) m_sharedObject->m_renderControl->initialize(); +#else + m_sharedObject->m_renderControl->initialize(m_context); +#endif m_context->doneCurrent(); QCoreApplication::postEvent(m_sharedObject->m_renderManager, diff --git a/src/quick3d/quick3dscene2d/qt3dquickscene2dnodefactory.cpp b/src/quick3d/quick3dscene2d/qt3dquickscene2dnodefactory.cpp index f757b0bbc..15b337420 100644 --- a/src/quick3d/quick3dscene2d/qt3dquickscene2dnodefactory.cpp +++ b/src/quick3d/quick3dscene2d/qt3dquickscene2dnodefactory.cpp @@ -76,8 +76,11 @@ Qt3DCore::QNode *QuickScene2DNodeFactory::createNode(const char *type) if (!typeInfo.resolved) { typeInfo.resolved = true; - typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), - QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), QTypeRevision::fromVersion(typeInfo.version.first, typeInfo.version.second)); +#else + typeInfo.t = QQmlMetaType::qmlType(QString::fromLatin1(typeInfo.quickName), typeInfo.version.first, typeInfo.version.second); +#endif } return typeInfo.t.isValid() ? qobject_cast<Qt3DCore::QNode *>(typeInfo.t.create()) : nullptr; diff --git a/tests/auto/quick3d/quick3dbuffer/tst_quick3dbuffer.cpp b/tests/auto/quick3d/quick3dbuffer/tst_quick3dbuffer.cpp index d59040c80..8583bdf7b 100644 --- a/tests/auto/quick3d/quick3dbuffer/tst_quick3dbuffer.cpp +++ b/tests/auto/quick3d/quick3dbuffer/tst_quick3dbuffer.cpp @@ -67,8 +67,8 @@ private Q_SLOTS: { // GIVEN Qt3DCore::Quick::Quick3DBuffer buf; - const QList<QVector3D> dataArray = { QVector3D(327.0f, 350.0f, 355.0f), - QVector3D(383.0f, 427.0f, 454.0f) }; + const QVector<QVector3D> dataArray = { QVector3D(327.0f, 350.0f, 355.0f), + QVector3D(383.0f, 427.0f, 454.0f) }; const int bufferByteSize = dataArray.size() * sizeof(QVector3D); const QLatin1String filePath("binary_data.bin"); diff --git a/tests/auto/render/scene2d/tst_scene2d.cpp b/tests/auto/render/scene2d/tst_scene2d.cpp index dfd602027..53075c692 100644 --- a/tests/auto/render/scene2d/tst_scene2d.cpp +++ b/tests/auto/render/scene2d/tst_scene2d.cpp @@ -67,7 +67,11 @@ public: e->type() <= QEvent::MouseMove) { QMouseEvent *me = static_cast<QMouseEvent *>(e); m_eventTypes.push_back(e->type()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) m_mousePoints.push_back(me->position()); +#else + m_mousePoints.push_back(me->pos()); +#endif } return QQuickWindow::event(e); } diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro index 8fea8cb48..3a897cf61 100644 --- a/tests/manual/manual.pro +++ b/tests/manual/manual.pro @@ -71,7 +71,6 @@ qtHaveModule(quick) { simple-shaders-qml \ transparency-qml \ transparency-qml-scene3d \ - rendercapture-qml \ additional-attributes-qml \ dynamic-model-loader-qml \ buffercapture-qml \ @@ -81,7 +80,6 @@ qtHaveModule(quick) { transforms-qml \ layerfilter-qml \ tessellation-modes \ - rendercapture-qml-fbo \ blitframebuffer-qml \ raycasting-qml \ raster-qml \ @@ -101,6 +99,13 @@ qtHaveModule(quick) { scene3d-in-sync \ compressed_textures \ boundingvolumes + +greaterThan(QT_MAJOR_VERSION, 6) { + SUBDIRS += \ + rendercapture-qml \ + rendercapture-qml-fbo +} + } qtHaveModule(quickwidgets): SUBDIRS += quickwidget-switch |