diff options
Diffstat (limited to 'src/quick/scenegraph')
30 files changed, 171 insertions, 181 deletions
diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwareadaptation.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwareadaptation.cpp index 8ad9b50b09..92c02b4966 100644 --- a/src/quick/scenegraph/adaptations/software/qsgsoftwareadaptation.cpp +++ b/src/quick/scenegraph/adaptations/software/qsgsoftwareadaptation.cpp @@ -78,7 +78,7 @@ QSGRenderLoop *QSGSoftwareAdaptation::createWindowManager() static bool envChecked = false; if (!envChecked) { envChecked = true; - threaded = qgetenv("QSG_RENDER_LOOP") == QByteArrayLiteral("threaded"); + threaded = qgetenv("QSG_RENDER_LOOP") == "threaded"; } if (threaded) diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h index eb5bfca1ee..322192944b 100644 --- a/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h +++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h @@ -561,7 +561,7 @@ public: void updateRootTransforms(Node *n); void updateRootTransforms(Node *n, Node *root, const QMatrix4x4 &combined); - void updateStates(QSGNode *n); + void updateStates(QSGNode *n) override; void visitNode(Node *n); void registerWithParentRoot(QSGNode *subRoot, QSGNode *parentRoot); diff --git a/src/quick/scenegraph/coreapi/qsgmaterial.cpp b/src/quick/scenegraph/coreapi/qsgmaterial.cpp index d2d27cd9aa..8d666d3d0b 100644 --- a/src/quick/scenegraph/coreapi/qsgmaterial.cpp +++ b/src/quick/scenegraph/coreapi/qsgmaterial.cpp @@ -364,8 +364,8 @@ void QSGMaterialShader::compile() { Q_ASSERT_X(!m_program.isLinked(), "QSGSMaterialShader::compile()", "Compile called multiple times!"); - program()->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexShader()); - program()->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentShader()); + program()->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, vertexShader()); + program()->addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, fragmentShader()); char const *const *attr = attributeNames(); #ifndef QT_NO_DEBUG diff --git a/src/quick/scenegraph/coreapi/qsgnode.h b/src/quick/scenegraph/coreapi/qsgnode.h index f7ea6dbe23..1467f2233d 100644 --- a/src/quick/scenegraph/coreapi/qsgnode.h +++ b/src/quick/scenegraph/coreapi/qsgnode.h @@ -325,7 +325,7 @@ public: void setCombinedOpacity(qreal opacity); qreal combinedOpacity() const { return m_combined_opacity; } - bool isSubtreeBlocked() const; + bool isSubtreeBlocked() const override; private: qreal m_opacity; diff --git a/src/quick/scenegraph/coreapi/qsgrenderer_p.h b/src/quick/scenegraph/coreapi/qsgrenderer_p.h index 26e29d414d..4589685765 100644 --- a/src/quick/scenegraph/coreapi/qsgrenderer_p.h +++ b/src/quick/scenegraph/coreapi/qsgrenderer_p.h @@ -138,7 +138,7 @@ class QSGBindableFboId : public QSGBindable { public: QSGBindableFboId(GLuint); - virtual void bind() const; + void bind() const override; private: GLuint m_id; }; @@ -160,8 +160,8 @@ public: static void dump(QSGNode *n); QSGNodeDumper() : m_indent(0) {} - void visitNode(QSGNode *n); - void visitChildren(QSGNode *n); + void visitNode(QSGNode *n) override; + void visitChildren(QSGNode *n) override; private: int m_indent; diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp index d309044e8f..3b0b2faf97 100644 --- a/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp +++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.cpp @@ -77,6 +77,7 @@ QT_BEGIN_NAMESPACE \value Software The Qt Quick 2D Renderer is in use \value OpenGL OpenGL ES 2.0 or higher \value Direct3D12 Direct3D 12 + \value OpenVG OpenVG via EGL */ /*! diff --git a/src/quick/scenegraph/coreapi/qsgrendererinterface.h b/src/quick/scenegraph/coreapi/qsgrendererinterface.h index cf8fcf9015..722488201b 100644 --- a/src/quick/scenegraph/coreapi/qsgrendererinterface.h +++ b/src/quick/scenegraph/coreapi/qsgrendererinterface.h @@ -53,7 +53,8 @@ public: Unknown, Software, OpenGL, - Direct3D12 + Direct3D12, + OpenVG }; enum Resource { diff --git a/src/quick/scenegraph/coreapi/qsgshaderrewriter.cpp b/src/quick/scenegraph/coreapi/qsgshaderrewriter.cpp index 3a35632d5c..48ab1aa52f 100644 --- a/src/quick/scenegraph/coreapi/qsgshaderrewriter.cpp +++ b/src/quick/scenegraph/coreapi/qsgshaderrewriter.cpp @@ -193,13 +193,13 @@ QByteArray qsgShaderRewriter_insertZAttributes(const char *input, QSurfaceFormat switch (profile) { case QSurfaceFormat::NoProfile: case QSurfaceFormat::CompatibilityProfile: - result += QByteArrayLiteral("attribute highp float _qt_order;\n"); - result += QByteArrayLiteral("uniform highp float _qt_zRange;\n"); + result += "attribute highp float _qt_order;\n" + "uniform highp float _qt_zRange;\n"; break; case QSurfaceFormat::CoreProfile: - result += QByteArrayLiteral("in float _qt_order;\n"); - result += QByteArrayLiteral("uniform float _qt_zRange;\n"); + result += "in float _qt_order;\n" + "uniform float _qt_zRange;\n"; break; } @@ -214,9 +214,9 @@ QByteArray qsgShaderRewriter_insertZAttributes(const char *input, QSurfaceFormat case Tokenizer::Token_CloseBrace: braceDepth--; if (braceDepth == 0) { - result += QByteArray::fromRawData(voidPos, tok.pos - 1 - voidPos); - result += QByteArrayLiteral(" gl_Position.z = (gl_Position.z * _qt_zRange + _qt_order) * gl_Position.w;\n"); - result += QByteArray(tok.pos - 1); + result += QByteArray::fromRawData(voidPos, tok.pos - 1 - voidPos) + + " gl_Position.z = (gl_Position.z * _qt_zRange + _qt_order) * gl_Position.w;\n" + + QByteArray(tok.pos - 1); return result; } break; diff --git a/src/quick/scenegraph/qsgadaptationlayer_p.h b/src/quick/scenegraph/qsgadaptationlayer_p.h index 5880c67af0..bf267ccf92 100644 --- a/src/quick/scenegraph/qsgadaptationlayer_p.h +++ b/src/quick/scenegraph/qsgadaptationlayer_p.h @@ -141,7 +141,7 @@ public: virtual void update() = 0; - virtual void accept(QSGNodeVisitorEx *visitor) { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } + void accept(QSGNodeVisitorEx *visitor) override { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } }; @@ -165,7 +165,7 @@ public: virtual void update() = 0; - virtual void accept(QSGNodeVisitorEx *visitor) { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } + void accept(QSGNodeVisitorEx *visitor) override { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } }; class Q_QUICK_PRIVATE_EXPORT QSGPainterNode : public QSGVisitableNode @@ -188,7 +188,7 @@ public: virtual void update() = 0; virtual QSGTexture *texture() const = 0; - virtual void accept(QSGNodeVisitorEx *visitor) { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } + void accept(QSGNodeVisitorEx *visitor) override { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } }; class Q_QUICK_EXPORT QSGLayer : public QSGDynamicTexture @@ -231,7 +231,7 @@ public: virtual void update() = 0; - virtual void accept(QSGNodeVisitorEx *visitor) { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } + void accept(QSGNodeVisitorEx *visitor) override { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } }; #endif @@ -389,7 +389,7 @@ public: void setOwnerElement(QQuickItem *ownerElement) { m_ownerElement = ownerElement; } QQuickItem *ownerElement() const { return m_ownerElement; } - virtual void accept(QSGNodeVisitorEx *visitor) { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } + void accept(QSGNodeVisitorEx *visitor) override { if (visitor->visit(this)) visitor->visitChildren(this); visitor->endVisit(this); } protected: QRectF m_bounding_rect; QQuickItem *m_ownerElement; diff --git a/src/quick/scenegraph/qsgbasicglyphnode_p.h b/src/quick/scenegraph/qsgbasicglyphnode_p.h index 1d09367ea5..0a43d17d2b 100644 --- a/src/quick/scenegraph/qsgbasicglyphnode_p.h +++ b/src/quick/scenegraph/qsgbasicglyphnode_p.h @@ -63,16 +63,16 @@ public: QSGBasicGlyphNode(); virtual ~QSGBasicGlyphNode(); - virtual QPointF baseLine() const { return m_baseLine; } - virtual void setGlyphs(const QPointF &position, const QGlyphRun &glyphs); - virtual void setColor(const QColor &color); + QPointF baseLine() const override { return m_baseLine; } + void setGlyphs(const QPointF &position, const QGlyphRun &glyphs) override; + void setColor(const QColor &color) override; - virtual void setPreferredAntialiasingMode(AntialiasingMode) { } - virtual void setStyle(QQuickText::TextStyle); - virtual void setStyleColor(const QColor &); + void setPreferredAntialiasingMode(AntialiasingMode) override { } + void setStyle(QQuickText::TextStyle) override; + void setStyleColor(const QColor &) override; virtual void setMaterialColor(const QColor &color) = 0; - virtual void update() = 0; + void update() override = 0; protected: QGlyphRun m_glyphs; diff --git a/src/quick/scenegraph/qsgcontextplugin_p.h b/src/quick/scenegraph/qsgcontextplugin_p.h index 08c3d21408..5914b42809 100644 --- a/src/quick/scenegraph/qsgcontextplugin_p.h +++ b/src/quick/scenegraph/qsgcontextplugin_p.h @@ -90,10 +90,10 @@ public: explicit QSGContextPlugin(QObject *parent = 0); virtual ~QSGContextPlugin(); - virtual QStringList keys() const = 0; + virtual QStringList keys() const override = 0; - virtual QQuickTextureFactory *createTextureFactoryFromImage(const QImage &) { return 0; } - virtual QSGRenderLoop *createWindowManager() { return 0; } + QQuickTextureFactory *createTextureFactoryFromImage(const QImage &) override { return 0; } + QSGRenderLoop *createWindowManager() override { return 0; } }; QT_END_NAMESPACE diff --git a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache_p.h b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache_p.h index eeea104e91..57dc4a5d07 100644 --- a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache_p.h +++ b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache_p.h @@ -72,10 +72,10 @@ public: QSGDefaultDistanceFieldGlyphCache(QSGDistanceFieldGlyphCacheManager *man, QOpenGLContext *c, const QRawFont &font); virtual ~QSGDefaultDistanceFieldGlyphCache(); - void requestGlyphs(const QSet<glyph_t> &glyphs); - void storeGlyphs(const QList<QDistanceField> &glyphs); - void referenceGlyphs(const QSet<glyph_t> &glyphs); - void releaseGlyphs(const QSet<glyph_t> &glyphs); + void requestGlyphs(const QSet<glyph_t> &glyphs) override; + void storeGlyphs(const QList<QDistanceField> &glyphs) override; + void referenceGlyphs(const QSet<glyph_t> &glyphs) override; + void releaseGlyphs(const QSet<glyph_t> &glyphs) override; bool useTextureResizeWorkaround() const; bool useTextureUploadWorkaround() const; @@ -116,24 +116,16 @@ private: { m_blitProgram = new QOpenGLShaderProgram; { - QString source; - source.append(QLatin1String(qopenglslMainWithTexCoordsVertexShader)); - source.append(QLatin1String(qopenglslUntransformedPositionVertexShader)); + const QString source = QLatin1String(qopenglslMainWithTexCoordsVertexShader) + + QLatin1String(qopenglslUntransformedPositionVertexShader); - QOpenGLShader *vertexShader = new QOpenGLShader(QOpenGLShader::Vertex, m_blitProgram); - vertexShader->compileSourceCode(source); - - m_blitProgram->addShader(vertexShader); + m_blitProgram->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, source); } { - QString source; - source.append(QLatin1String(qopenglslMainFragmentShader)); - source.append(QLatin1String(qopenglslImageSrcFragmentShader)); - - QOpenGLShader *fragmentShader = new QOpenGLShader(QOpenGLShader::Fragment, m_blitProgram); - fragmentShader->compileSourceCode(source); + const QString source = QLatin1String(qopenglslMainFragmentShader) + + QLatin1String(qopenglslImageSrcFragmentShader); - m_blitProgram->addShader(fragmentShader); + m_blitProgram->addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, source); } m_blitProgram->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR); m_blitProgram->bindAttributeLocation("textureCoordArray", QT_TEXTURE_COORDS_ATTR); diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p_p.h b/src/quick/scenegraph/qsgdefaultglyphnode_p_p.h index caa7dfad07..b0a2788dd8 100644 --- a/src/quick/scenegraph/qsgdefaultglyphnode_p_p.h +++ b/src/quick/scenegraph/qsgdefaultglyphnode_p_p.h @@ -71,9 +71,9 @@ public: QSGTextMaskMaterial(const QRawFont &font, QFontEngine::GlyphFormat glyphFormat = QFontEngine::Format_None); virtual ~QSGTextMaskMaterial(); - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; - virtual int compare(const QSGMaterial *other) const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; + int compare(const QSGMaterial *other) const override; void setColor(const QColor &c) { m_color = QVector4D(c.redF(), c.greenF(), c.blueF(), c.alphaF()); } void setColor(const QVector4D &color) { m_color = color; } @@ -115,10 +115,10 @@ public: void setStyleColor(const QVector4D &color) { m_styleColor = color; } const QVector4D &styleColor() const { return m_styleColor; } - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; - int compare(const QSGMaterial *other) const; + int compare(const QSGMaterial *other) const override; private: QVector2D m_styleShift; @@ -131,8 +131,8 @@ public: QSGOutlinedTextMaterial(const QRawFont &font); ~QSGOutlinedTextMaterial() { } - QSGMaterialType *type() const; - QSGMaterialShader *createShader() const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; }; QT_END_NAMESPACE diff --git a/src/quick/scenegraph/qsgdefaultrendercontext.cpp b/src/quick/scenegraph/qsgdefaultrendercontext.cpp index 1a17453baf..2c5b4ff5c8 100644 --- a/src/quick/scenegraph/qsgdefaultrendercontext.cpp +++ b/src/quick/scenegraph/qsgdefaultrendercontext.cpp @@ -262,8 +262,8 @@ void QSGDefaultRenderContext::compileShader(QSGMaterialShader *shader, QSGMateri "QSGRenderContext::compile()", "materials with custom compile step cannot have custom vertex/fragment code"); QOpenGLShaderProgram *p = shader->program(); - p->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexCode ? vertexCode : shader->vertexShader()); - p->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentCode ? fragmentCode : shader->fragmentShader()); + p->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, vertexCode ? vertexCode : shader->vertexShader()); + p->addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, fragmentCode ? fragmentCode : shader->fragmentShader()); p->link(); if (!p->isLinked()) qWarning() << "shader compilation failed:" << endl << p->log(); diff --git a/src/quick/scenegraph/qsgdistancefieldglyphnode_p.h b/src/quick/scenegraph/qsgdistancefieldglyphnode_p.h index 22c68558ef..c0c6bda718 100644 --- a/src/quick/scenegraph/qsgdistancefieldglyphnode_p.h +++ b/src/quick/scenegraph/qsgdistancefieldglyphnode_p.h @@ -67,19 +67,19 @@ public: QSGDistanceFieldGlyphNode(QSGRenderContext *context); ~QSGDistanceFieldGlyphNode(); - virtual QPointF baseLine() const { return m_baseLine; } - virtual void setGlyphs(const QPointF &position, const QGlyphRun &glyphs); - virtual void setColor(const QColor &color); + QPointF baseLine() const override { return m_baseLine; } + void setGlyphs(const QPointF &position, const QGlyphRun &glyphs) override; + void setColor(const QColor &color) override; - virtual void setPreferredAntialiasingMode(AntialiasingMode mode); + void setPreferredAntialiasingMode(AntialiasingMode mode) override; - virtual void setStyle(QQuickText::TextStyle style); - virtual void setStyleColor(const QColor &color); + void setStyle(QQuickText::TextStyle style) override; + void setStyleColor(const QColor &color) override; - virtual void update(); - void preprocess(); + void update() override; + void preprocess() override; - void invalidateGlyphs(const QVector<quint32> &glyphs); + void invalidateGlyphs(const QVector<quint32> &glyphs) override; void updateGeometry(); diff --git a/src/quick/scenegraph/qsgdistancefieldglyphnode_p_p.h b/src/quick/scenegraph/qsgdistancefieldglyphnode_p_p.h index 38dcf3d307..c13a0898eb 100644 --- a/src/quick/scenegraph/qsgdistancefieldglyphnode_p_p.h +++ b/src/quick/scenegraph/qsgdistancefieldglyphnode_p_p.h @@ -63,9 +63,9 @@ public: QSGDistanceFieldTextMaterial(); ~QSGDistanceFieldTextMaterial(); - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; - virtual int compare(const QSGMaterial *other) const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; + int compare(const QSGMaterial *other) const override; virtual void setColor(const QColor &color); const QVector4D &color() const { return m_color; } @@ -97,9 +97,9 @@ public: QSGDistanceFieldStyledTextMaterial(); ~QSGDistanceFieldStyledTextMaterial(); - virtual QSGMaterialType *type() const = 0; - virtual QSGMaterialShader *createShader() const = 0; - virtual int compare(const QSGMaterial *other) const; + QSGMaterialType *type() const override = 0; + QSGMaterialShader *createShader() const override = 0; + int compare(const QSGMaterial *other) const override; void setStyleColor(const QColor &color); const QVector4D &styleColor() const { return m_styleColor; } @@ -114,8 +114,8 @@ public: QSGDistanceFieldOutlineTextMaterial(); ~QSGDistanceFieldOutlineTextMaterial(); - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; }; class Q_QUICK_PRIVATE_EXPORT QSGDistanceFieldShiftedStyleTextMaterial : public QSGDistanceFieldStyledTextMaterial @@ -124,9 +124,9 @@ public: QSGDistanceFieldShiftedStyleTextMaterial(); ~QSGDistanceFieldShiftedStyleTextMaterial(); - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; - virtual int compare(const QSGMaterial *other) const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; + int compare(const QSGMaterial *other) const override; void setShift(const QPointF &shift) { m_shift = shift; } const QPointF &shift() const { return m_shift; } @@ -138,17 +138,17 @@ protected: class Q_QUICK_PRIVATE_EXPORT QSGHiQSubPixelDistanceFieldTextMaterial : public QSGDistanceFieldTextMaterial { public: - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; - void setColor(const QColor &color) { m_color = QVector4D(color.redF(), color.greenF(), color.blueF(), color.alphaF()); } + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; + void setColor(const QColor &color) override { m_color = QVector4D(color.redF(), color.greenF(), color.blueF(), color.alphaF()); } }; class Q_QUICK_PRIVATE_EXPORT QSGLoQSubPixelDistanceFieldTextMaterial : public QSGDistanceFieldTextMaterial { public: - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; - void setColor(const QColor &color) { m_color = QVector4D(color.redF(), color.greenF(), color.blueF(), color.alphaF()); } + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; + void setColor(const QColor &color) override { m_color = QVector4D(color.redF(), color.greenF(), color.blueF(), color.alphaF()); } }; QT_END_NAMESPACE diff --git a/src/quick/scenegraph/qsgrenderloop.cpp b/src/quick/scenegraph/qsgrenderloop.cpp index ec874f6ff0..48288bfc62 100644 --- a/src/quick/scenegraph/qsgrenderloop.cpp +++ b/src/quick/scenegraph/qsgrenderloop.cpp @@ -211,11 +211,11 @@ QSGRenderLoop *QSGRenderLoop::instance() if (Q_UNLIKELY(qEnvironmentVariableIsSet("QSG_RENDER_LOOP"))) { const QByteArray loopName = qgetenv("QSG_RENDER_LOOP"); - if (loopName == QByteArrayLiteral("windows")) + if (loopName == "windows") loopType = WindowsRenderLoop; - else if (loopName == QByteArrayLiteral("basic")) + else if (loopName == "basic") loopType = BasicRenderLoop; - else if (loopName == QByteArrayLiteral("threaded")) + else if (loopName == "threaded") loopType = ThreadedRenderLoop; } diff --git a/src/quick/scenegraph/qsgthreadedrenderloop_p.h b/src/quick/scenegraph/qsgthreadedrenderloop_p.h index 0ab83b444a..32bfcb7148 100644 --- a/src/quick/scenegraph/qsgthreadedrenderloop_p.h +++ b/src/quick/scenegraph/qsgthreadedrenderloop_p.h @@ -68,29 +68,29 @@ public: QSGThreadedRenderLoop(); ~QSGThreadedRenderLoop(); - void show(QQuickWindow *) {} - void hide(QQuickWindow *); + void show(QQuickWindow *) override {} + void hide(QQuickWindow *) override; - void windowDestroyed(QQuickWindow *window); - void exposureChanged(QQuickWindow *window); + void windowDestroyed(QQuickWindow *window) override; + void exposureChanged(QQuickWindow *window) override; - QImage grab(QQuickWindow *); + QImage grab(QQuickWindow *) override; - void update(QQuickWindow *window); - void maybeUpdate(QQuickWindow *window); - void handleUpdateRequest(QQuickWindow *window); + void update(QQuickWindow *window) override; + void maybeUpdate(QQuickWindow *window) override; + void handleUpdateRequest(QQuickWindow *window) override; - QSGContext *sceneGraphContext() const; - QSGRenderContext *createRenderContext(QSGContext *) const; + QSGContext *sceneGraphContext() const override; + QSGRenderContext *createRenderContext(QSGContext *) const override; - QAnimationDriver *animationDriver() const; + QAnimationDriver *animationDriver() const override; - void releaseResources(QQuickWindow *window); + void releaseResources(QQuickWindow *window) override; - bool event(QEvent *); - void postJob(QQuickWindow *window, QRunnable *job); + bool event(QEvent *) override; + void postJob(QQuickWindow *window, QRunnable *job) override; - bool interleaveIncubation() const; + bool interleaveIncubation() const override; public Q_SLOTS: void animationStarted(); diff --git a/src/quick/scenegraph/qsgwindowsrenderloop.cpp b/src/quick/scenegraph/qsgwindowsrenderloop.cpp index 13388c0841..e944ddbc4f 100644 --- a/src/quick/scenegraph/qsgwindowsrenderloop.cpp +++ b/src/quick/scenegraph/qsgwindowsrenderloop.cpp @@ -84,18 +84,17 @@ QSGWindowsRenderLoop::QSGWindowsRenderLoop() { m_rc = static_cast<QSGDefaultRenderContext *>(m_sg->createRenderContext()); - m_animationDriver = m_sg->createAnimationDriver(m_sg); - m_animationDriver->install(); - - connect(m_animationDriver, SIGNAL(started()), this, SLOT(started())); - connect(m_animationDriver, SIGNAL(stopped()), this, SLOT(stopped())); - m_vsyncDelta = 1000 / QGuiApplication::primaryScreen()->refreshRate(); if (m_vsyncDelta <= 0) m_vsyncDelta = 16; RLDEBUG("Windows Render Loop created"); + m_animationDriver = m_sg->createAnimationDriver(m_sg); + connect(m_animationDriver, SIGNAL(started()), this, SLOT(started())); + connect(m_animationDriver, SIGNAL(stopped()), this, SLOT(stopped())); + m_animationDriver->install(); + qsg_render_timer.start(); } diff --git a/src/quick/scenegraph/qsgwindowsrenderloop_p.h b/src/quick/scenegraph/qsgwindowsrenderloop_p.h index 9e5d7f04d3..1940a66af2 100644 --- a/src/quick/scenegraph/qsgwindowsrenderloop_p.h +++ b/src/quick/scenegraph/qsgwindowsrenderloop_p.h @@ -70,31 +70,31 @@ public: explicit QSGWindowsRenderLoop(); ~QSGWindowsRenderLoop(); - void show(QQuickWindow *window); - void hide(QQuickWindow *window); + void show(QQuickWindow *window) override; + void hide(QQuickWindow *window) override; - void windowDestroyed(QQuickWindow *window); + void windowDestroyed(QQuickWindow *window) override; - void exposureChanged(QQuickWindow *window); - QImage grab(QQuickWindow *window); + void exposureChanged(QQuickWindow *window) override; + QImage grab(QQuickWindow *window) override; - void update(QQuickWindow *window); - void maybeUpdate(QQuickWindow *window); + void update(QQuickWindow *window) override; + void maybeUpdate(QQuickWindow *window) override; - QAnimationDriver *animationDriver() const { return m_animationDriver; } + QAnimationDriver *animationDriver() const override { return m_animationDriver; } - QSGContext *sceneGraphContext() const { return m_sg; } - QSGRenderContext *createRenderContext(QSGContext *) const; + QSGContext *sceneGraphContext() const override { return m_sg; } + QSGRenderContext *createRenderContext(QSGContext *) const override; - void releaseResources(QQuickWindow *) { } + void releaseResources(QQuickWindow *) override { } void render(); void renderWindow(QQuickWindow *window); - bool event(QEvent *event); + bool event(QEvent *event) override; bool anyoneShowing() const; - bool interleaveIncubation() const; + bool interleaveIncubation() const override; public Q_SLOTS: void started(); diff --git a/src/quick/scenegraph/util/qsgatlastexture_p.h b/src/quick/scenegraph/util/qsgatlastexture_p.h index cd24645fcf..3dee539547 100644 --- a/src/quick/scenegraph/util/qsgatlastexture_p.h +++ b/src/quick/scenegraph/util/qsgatlastexture_p.h @@ -131,26 +131,26 @@ public: Texture(Atlas *atlas, const QRect &textureRect, const QImage &image); ~Texture(); - int textureId() const { return m_atlas->textureId(); } - QSize textureSize() const { return atlasSubRectWithoutPadding().size(); } + int textureId() const override { return m_atlas->textureId(); } + QSize textureSize() const override { return atlasSubRectWithoutPadding().size(); } void setHasAlphaChannel(bool alpha) { m_has_alpha = alpha; } - bool hasAlphaChannel() const { return m_has_alpha; } - bool hasMipmaps() const { return false; } - bool isAtlasTexture() const { return true; } + bool hasAlphaChannel() const override { return m_has_alpha; } + bool hasMipmaps() const override { return false; } + bool isAtlasTexture() const override { return true; } - QRectF normalizedTextureSubRect() const { return m_texture_coords_rect; } + QRectF normalizedTextureSubRect() const override { return m_texture_coords_rect; } QRect atlasSubRect() const { return m_allocated_rect; } QRect atlasSubRectWithoutPadding() const { return m_allocated_rect.adjusted(1, 1, -1, -1); } bool isTexture() const { return true; } - QSGTexture *removedFromAtlas() const; + QSGTexture *removedFromAtlas() const override; void releaseImage() { m_image = QImage(); } const QImage &image() const { return m_image; } - void bind(); + void bind() override; private: QRect m_allocated_rect; diff --git a/src/quick/scenegraph/util/qsgdefaultpainternode_p.h b/src/quick/scenegraph/util/qsgdefaultpainternode_p.h index 7488f7878d..084fc1e004 100644 --- a/src/quick/scenegraph/util/qsgdefaultpainternode_p.h +++ b/src/quick/scenegraph/util/qsgdefaultpainternode_p.h @@ -72,7 +72,7 @@ public: void setDirtyRect(const QRect &rect) { m_dirty_rect = rect; } - void bind(); + void bind() override; private: QRect m_dirty_rect; @@ -84,43 +84,43 @@ public: QSGDefaultPainterNode(QQuickPaintedItem *item); virtual ~QSGDefaultPainterNode(); - void setPreferredRenderTarget(QQuickPaintedItem::RenderTarget target); + void setPreferredRenderTarget(QQuickPaintedItem::RenderTarget target) override; - void setSize(const QSize &size); + void setSize(const QSize &size) override; QSize size() const { return m_size; } - void setDirty(const QRect &dirtyRect = QRect()); + void setDirty(const QRect &dirtyRect = QRect()) override; - void setOpaquePainting(bool opaque); + void setOpaquePainting(bool opaque) override; bool opaquePainting() const { return m_opaquePainting; } - void setLinearFiltering(bool linearFiltering); + void setLinearFiltering(bool linearFiltering) override; bool linearFiltering() const { return m_linear_filtering; } - void setMipmapping(bool mipmapping); + void setMipmapping(bool mipmapping) override; bool mipmapping() const { return m_mipmapping; } - void setSmoothPainting(bool s); + void setSmoothPainting(bool s) override; bool smoothPainting() const { return m_smoothPainting; } - void setFillColor(const QColor &c); + void setFillColor(const QColor &c) override; QColor fillColor() const { return m_fillColor; } - void setContentsScale(qreal s); + void setContentsScale(qreal s) override; qreal contentsScale() const { return m_contentsScale; } - void setFastFBOResizing(bool fastResizing); + void setFastFBOResizing(bool fastResizing) override; bool fastFBOResizing() const { return m_fastFBOResizing; } - void setTextureSize(const QSize &textureSize); + void setTextureSize(const QSize &textureSize) override; QSize textureSize() const { return m_textureSize; } - QImage toImage() const; - void update(); + QImage toImage() const override; + void update() override; void paint(); - QSGTexture *texture() const { return m_texture; } + QSGTexture *texture() const override { return m_texture; } private: void updateTexture(); diff --git a/src/quick/scenegraph/util/qsgdepthstencilbuffer_p.h b/src/quick/scenegraph/util/qsgdepthstencilbuffer_p.h index c2d0590532..f7c6923021 100644 --- a/src/quick/scenegraph/util/qsgdepthstencilbuffer_p.h +++ b/src/quick/scenegraph/util/qsgdepthstencilbuffer_p.h @@ -119,7 +119,7 @@ public: virtual ~QSGDefaultDepthStencilBuffer(); protected: - virtual void free(); + void free() override; }; diff --git a/src/quick/scenegraph/util/qsgflatcolormaterial.h b/src/quick/scenegraph/util/qsgflatcolormaterial.h index 7f292a2a9b..4829ac3279 100644 --- a/src/quick/scenegraph/util/qsgflatcolormaterial.h +++ b/src/quick/scenegraph/util/qsgflatcolormaterial.h @@ -49,13 +49,13 @@ class Q_QUICK_EXPORT QSGFlatColorMaterial : public QSGMaterial { public: QSGFlatColorMaterial(); - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; void setColor(const QColor &color); const QColor &color() const { return m_color; } - int compare(const QSGMaterial *other) const; + int compare(const QSGMaterial *other) const override; private: QColor m_color; diff --git a/src/quick/scenegraph/util/qsgshadersourcebuilder.cpp b/src/quick/scenegraph/util/qsgshadersourcebuilder.cpp index caa296451e..d8f92919cb 100644 --- a/src/quick/scenegraph/util/qsgshadersourcebuilder.cpp +++ b/src/quick/scenegraph/util/qsgshadersourcebuilder.cpp @@ -217,11 +217,11 @@ void QSGShaderSourceBuilder::initializeProgramFromFiles(QOpenGLShaderProgram *pr QSGShaderSourceBuilder builder; builder.appendSourceFile(vertexShader); - program->addShaderFromSourceCode(QOpenGLShader::Vertex, builder.source()); + program->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, builder.source()); builder.clear(); builder.appendSourceFile(fragmentShader); - program->addShaderFromSourceCode(QOpenGLShader::Fragment, builder.source()); + program->addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, builder.source()); } QByteArray QSGShaderSourceBuilder::source() const @@ -310,13 +310,10 @@ void QSGShaderSourceBuilder::addDefinition(const QByteArray &definition) const char *insertionPos = extensionPos ? extensionPos : (versionPos ? versionPos : input); // Construct a new shader string, inserting the definition - QByteArray newSource; - newSource.reserve(m_source.size() + definition.size() + 9); - newSource += QByteArray::fromRawData(input, insertionPos - input); - newSource += QByteArrayLiteral("#define ") + definition + QByteArrayLiteral("\n"); - newSource += QByteArray::fromRawData(insertionPos, m_source.size() - (insertionPos - input)); - - m_source = newSource; + QByteArray newSource = QByteArray::fromRawData(input, insertionPos - input) + + "#define " + definition + '\n' + + QByteArray::fromRawData(insertionPos, m_source.size() - (insertionPos - input)); + m_source = std::move(newSource); } void QSGShaderSourceBuilder::removeVersion() diff --git a/src/quick/scenegraph/util/qsgsimplematerial.h b/src/quick/scenegraph/util/qsgsimplematerial.h index 8f42599832..0e7219d7bd 100644 --- a/src/quick/scenegraph/util/qsgsimplematerial.h +++ b/src/quick/scenegraph/util/qsgsimplematerial.h @@ -48,7 +48,7 @@ template <typename State> class QSGSimpleMaterialShader : public QSGMaterialShader { public: - void initialize() { + void initialize() override { QSGMaterialShader::initialize(); #if QT_CONFIG(opengl) m_id_matrix = program()->uniformLocation(uniformMatrixName()); @@ -74,7 +74,7 @@ public: const char *uniformMatrixName() const { return "qt_Matrix"; } const char *uniformOpacityName() const { return "qt_Opacity"; } - void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial); + void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) override; virtual void updateState(const State *newState, const State *oldState) = 0; @@ -82,7 +82,7 @@ public: virtual QList<QByteArray> attributes() const = 0; - char const *const *attributeNames() const + char const *const *attributeNames() const override { if (m_attribute_pointers.size()) return m_attribute_pointers.constData(); @@ -149,8 +149,8 @@ public: { } - QSGMaterialShader *createShader() const { return m_func(); } - QSGMaterialType *type() const { return &m_type; } + QSGMaterialShader *createShader() const override { return m_func(); } + QSGMaterialType *type() const override { return &m_type; } State *state() { return &m_state; } const State *state() const { return &m_state; } diff --git a/src/quick/scenegraph/util/qsgtexture_p.h b/src/quick/scenegraph/util/qsgtexture_p.h index 13c862eb88..b6fcfc31c4 100644 --- a/src/quick/scenegraph/util/qsgtexture_p.h +++ b/src/quick/scenegraph/util/qsgtexture_p.h @@ -87,19 +87,19 @@ public: bool ownsTexture() const { return m_owns_texture; } void setTextureId(int id); - int textureId() const; + int textureId() const override; void setTextureSize(const QSize &size) { m_texture_size = size; } - QSize textureSize() const { return m_texture_size; } + QSize textureSize() const override { return m_texture_size; } void setHasAlphaChannel(bool alpha) { m_has_alpha = alpha; } - bool hasAlphaChannel() const { return m_has_alpha; } + bool hasAlphaChannel() const override { return m_has_alpha; } - bool hasMipmaps() const { return mipmapFiltering() != QSGTexture::None; } + bool hasMipmaps() const override { return mipmapFiltering() != QSGTexture::None; } void setImage(const QImage &image); const QImage &image() { return m_image; } - virtual void bind(); + void bind() override; static QSGPlainTexture *fromImage(const QImage &image) { QSGPlainTexture *t = new QSGPlainTexture(); diff --git a/src/quick/scenegraph/util/qsgtexturematerial.h b/src/quick/scenegraph/util/qsgtexturematerial.h index 02b59108b3..dc87131773 100644 --- a/src/quick/scenegraph/util/qsgtexturematerial.h +++ b/src/quick/scenegraph/util/qsgtexturematerial.h @@ -50,9 +50,9 @@ class Q_QUICK_EXPORT QSGOpaqueTextureMaterial : public QSGMaterial public: QSGOpaqueTextureMaterial(); - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; - virtual int compare(const QSGMaterial *other) const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; + int compare(const QSGMaterial *other) const override; void setTexture(QSGTexture *texture); QSGTexture *texture() const { return m_texture; } @@ -84,8 +84,8 @@ protected: class Q_QUICK_EXPORT QSGTextureMaterial : public QSGOpaqueTextureMaterial { public: - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; }; QT_END_NAMESPACE diff --git a/src/quick/scenegraph/util/qsgtexturematerial_p.h b/src/quick/scenegraph/util/qsgtexturematerial_p.h index 75e5877a72..093d820801 100644 --- a/src/quick/scenegraph/util/qsgtexturematerial_p.h +++ b/src/quick/scenegraph/util/qsgtexturematerial_p.h @@ -61,13 +61,13 @@ class Q_QUICK_PRIVATE_EXPORT QSGOpaqueTextureMaterialShader : public QSGMaterial public: QSGOpaqueTextureMaterialShader(); - virtual void updateState(const RenderState &state, QSGMaterial *newEffect, QSGMaterial *oldEffect); - virtual char const *const *attributeNames() const; + void updateState(const RenderState &state, QSGMaterial *newEffect, QSGMaterial *oldEffect) override; + char const *const *attributeNames() const override; static QSGMaterialType type; protected: - virtual void initialize(); + void initialize() override; int m_matrix_id; }; @@ -77,8 +77,8 @@ class QSGTextureMaterialShader : public QSGOpaqueTextureMaterialShader public: QSGTextureMaterialShader(); - virtual void updateState(const RenderState &state, QSGMaterial *newEffect, QSGMaterial *oldEffect); - virtual void initialize(); + void updateState(const RenderState &state, QSGMaterial *newEffect, QSGMaterial *oldEffect) override; + void initialize() override; static QSGMaterialType type; diff --git a/src/quick/scenegraph/util/qsgvertexcolormaterial.h b/src/quick/scenegraph/util/qsgvertexcolormaterial.h index 68f32d8af0..65cb642d92 100644 --- a/src/quick/scenegraph/util/qsgvertexcolormaterial.h +++ b/src/quick/scenegraph/util/qsgvertexcolormaterial.h @@ -49,11 +49,11 @@ class Q_QUICK_EXPORT QSGVertexColorMaterial : public QSGMaterial public: QSGVertexColorMaterial(); - int compare(const QSGMaterial *other) const; + int compare(const QSGMaterial *other) const override; protected: - virtual QSGMaterialType *type() const; - virtual QSGMaterialShader *createShader() const; + QSGMaterialType *type() const override; + QSGMaterialShader *createShader() const override; }; QT_END_NAMESPACE |