diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-29 17:19:36 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-10-03 21:18:41 +0200 |
commit | 7b26f6a1746419161a8f875e341b3e31220f4141 (patch) | |
tree | f784e568015e1f7f199abb388b97fefdb158c84e /src/render/frontend/qshaderprogram.cpp | |
parent | c16689bb1ccf31416df7b8c69fe032898cf87dec (diff) |
QNode refactoring
Move almost everything to private classes.
Assimp loading restored.
All examples working.
QNode hierachy is now handled through QObject::setParent, addChild,
removeChild are part of the private api.
Note: commented QChangeArbiter unit tests as they can no longer work with this
patch and will restore them when QChangeArbiter will have been made private.
Task-number: QTBUG-41470
Task-number: QTBUG-41523
Change-Id: I4430974b3aa7f3744c38714b451b122e0cb4d0c9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qshaderprogram.cpp')
-rw-r--r-- | src/render/frontend/qshaderprogram.cpp | 92 |
1 files changed, 44 insertions, 48 deletions
diff --git a/src/render/frontend/qshaderprogram.cpp b/src/render/frontend/qshaderprogram.cpp index 4c39b64aa..048c31e4f 100644 --- a/src/render/frontend/qshaderprogram.cpp +++ b/src/render/frontend/qshaderprogram.cpp @@ -54,31 +54,28 @@ QShaderProgramPrivate::QShaderProgramPrivate(QShaderProgram *qq) { } -QShaderProgram::QShaderProgram(QNode *parent) - : QAbstractShader(*new QShaderProgramPrivate(this), parent) +void QShaderProgramPrivate::copy(const QNodePrivate *ref) { + QAbstractShaderPrivate::copy(ref); + const QShaderProgramPrivate *prog = static_cast<const QShaderProgramPrivate *>(ref); + m_vertexSourceFile = prog->m_vertexSourceFile; + m_tessControlSourceFile = prog->m_tessControlSourceFile; + m_tessEvalSourceFile = prog->m_tessEvalSourceFile; + m_geometrySourceFile = prog->m_geometrySourceFile; + m_fragmentSourceFile = prog->m_fragmentSourceFile; + m_computeSourceFile = prog->m_computeSourceFile; + + m_vertexShaderCode = prog->m_vertexShaderCode; + m_tessControlShaderCode = prog->m_tessControlShaderCode; + m_tessEvalShaderCode = prog->m_tessEvalShaderCode; + m_geometryShaderCode = prog->m_geometryShaderCode; + m_fragmentShaderCode = prog->m_fragmentShaderCode; + m_computeShaderCode = prog->m_computeShaderCode; } -void QShaderProgram::copy(const QNode *ref) +QShaderProgram::QShaderProgram(QNode *parent) + : QAbstractShader(*new QShaderProgramPrivate(this), parent) { - Q_D(QShaderProgram); - QAbstractShader::copy(ref); - const QShaderProgram *prog = qobject_cast<const QShaderProgram *>(ref); - if (prog != Q_NULLPTR) { - d->m_vertexSourceFile = prog->d_func()->m_vertexSourceFile; - d->m_tessControlSourceFile = prog->d_func()->m_tessControlSourceFile; - d->m_tessEvalSourceFile = prog->d_func()->m_tessEvalSourceFile; - d->m_geometrySourceFile = prog->d_func()->m_geometrySourceFile; - d->m_fragmentSourceFile = prog->d_func()->m_fragmentSourceFile; - d->m_computeSourceFile = prog->d_func()->m_computeSourceFile; - - d->m_vertexShaderCode = prog->d_func()->m_vertexShaderCode; - d->m_tessControlShaderCode = prog->d_func()->m_tessControlShaderCode; - d->m_tessEvalShaderCode = prog->d_func()->m_tessEvalShaderCode; - d->m_geometryShaderCode = prog->d_func()->m_geometryShaderCode; - d->m_fragmentShaderCode = prog->d_func()->m_fragmentShaderCode; - d->m_computeShaderCode = prog->d_func()->m_computeShaderCode; - } } QShaderProgram::QShaderProgram(QShaderProgramPrivate &dd, QNode *parent) @@ -86,11 +83,10 @@ QShaderProgram::QShaderProgram(QShaderProgramPrivate &dd, QNode *parent) { } -QShaderProgram *QShaderProgram::doClone(bool isClone) const +QShaderProgram *QShaderProgram::doClone() const { QShaderProgram *clone = new QShaderProgram(); - clone->copy(this); - clone->d_func()->m_isClone = isClone; + clone->d_func()->copy(d_func()); return clone; } @@ -99,8 +95,8 @@ void QShaderProgram::setVertexShaderSourceFile(const QString& vertexShaderSource Q_D(QShaderProgram); if (vertexShaderSourceFile != d->m_vertexSourceFile) { d->m_vertexSourceFile = vertexShaderSourceFile; - notifyPropertyChange(QByteArrayLiteral("vertexSourceFile"), - vertexShaderSourceFile); + d->notifyPropertyChange(QByteArrayLiteral("vertexSourceFile"), + vertexShaderSourceFile); emit vertexShaderSourceFileChanged(); } } @@ -116,8 +112,8 @@ void QShaderProgram::setTessellationControlShaderSourceFile(const QString &tesse Q_D(QShaderProgram); if (tessellationControlShaderSourceFile != d->m_tessControlSourceFile) { d->m_tessControlSourceFile = tessellationControlShaderSourceFile; - notifyPropertyChange(QByteArrayLiteral("tessellationControlShaderSourceFile"), - tessellationControlShaderSourceFile); + d->notifyPropertyChange(QByteArrayLiteral("tessellationControlShaderSourceFile"), + tessellationControlShaderSourceFile); emit tessellationControlShaderSourceFileChanged(); } } @@ -133,8 +129,8 @@ void QShaderProgram::setTessellationEvaluationShaderSourceFile(const QString &te Q_D(QShaderProgram); if (tessellationEvaluationShaderSourceFile != d->m_tessEvalSourceFile) { d->m_tessEvalSourceFile = tessellationEvaluationShaderSourceFile; - notifyPropertyChange(QByteArrayLiteral("tessellationEvaluationShaderSourceFile"), - tessellationEvaluationShaderSourceFile); + d->notifyPropertyChange(QByteArrayLiteral("tessellationEvaluationShaderSourceFile"), + tessellationEvaluationShaderSourceFile); emit tessellationEvaluationShaderSourceFileChanged(); } } @@ -150,8 +146,8 @@ void QShaderProgram::setGeometryShaderSourceFile(const QString &geometryShaderSo Q_D(QShaderProgram); if (geometryShaderSourceFile != d->m_geometrySourceFile) { d->m_geometrySourceFile = geometryShaderSourceFile; - notifyPropertyChange(QByteArrayLiteral("geometryShaderSourceFile"), - geometryShaderSourceFile); + d->notifyPropertyChange(QByteArrayLiteral("geometryShaderSourceFile"), + geometryShaderSourceFile); emit geometryShaderSourceFileChanged(); } } @@ -167,8 +163,8 @@ void QShaderProgram::setFragmentShaderSourceFile(const QString& fragmentShaderSo Q_D(QShaderProgram); if (fragmentShaderSourceFile != d->m_fragmentSourceFile) { d->m_fragmentSourceFile = fragmentShaderSourceFile; - notifyPropertyChange(QByteArrayLiteral("fragmentSourceFile"), - fragmentShaderSourceFile); + d->notifyPropertyChange(QByteArrayLiteral("fragmentSourceFile"), + fragmentShaderSourceFile); emit fragmentShaderSourceFileChanged(); } } @@ -184,8 +180,8 @@ void QShaderProgram::setComputeShaderSourceFile(const QString &computeShaderSour Q_D(QShaderProgram); if (computeShaderSourceFile != d->m_computeSourceFile) { d->m_computeSourceFile = computeShaderSourceFile; - notifyPropertyChange(QByteArrayLiteral("computeShaderSourceFile"), - computeShaderSourceFile); + d->notifyPropertyChange(QByteArrayLiteral("computeShaderSourceFile"), + computeShaderSourceFile); emit computeShaderSourceFileChanged(); } } @@ -251,8 +247,8 @@ void QShaderProgram::setVertexShaderCode(const QByteArray &vertexShaderCode) Q_D(QShaderProgram); if (vertexShaderCode != d->m_vertexShaderCode) { d->m_vertexShaderCode = vertexShaderCode; - notifyPropertyChange(QByteArrayLiteral("vertexSourceCode"), - vertexShaderCode); + d->notifyPropertyChange(QByteArrayLiteral("vertexSourceCode"), + vertexShaderCode); emit vertexShaderCodeChanged(); } } @@ -268,8 +264,8 @@ void QShaderProgram::setTessellationControlShaderCode(const QByteArray &tessella Q_D(QShaderProgram); if (tessellationControlShaderCode != d->m_tessControlShaderCode) { d->m_tessControlShaderCode = tessellationControlShaderCode; - notifyPropertyChange(QByteArrayLiteral("tessellationControlSourceCode"), - tessellationControlShaderCode); + d->notifyPropertyChange(QByteArrayLiteral("tessellationControlSourceCode"), + tessellationControlShaderCode); emit tessellationControlShaderCodeChanged(); } } @@ -285,8 +281,8 @@ void QShaderProgram::setTessellationEvaluationShaderCode(const QByteArray &tesse Q_D(QShaderProgram); if (tessellationEvaluationShaderCode != d->m_tessEvalShaderCode) { d->m_tessEvalShaderCode = tessellationEvaluationShaderCode; - notifyPropertyChange(QByteArrayLiteral("tessellationEvaluationSourceCode"), - tessellationEvaluationShaderCode); + d->notifyPropertyChange(QByteArrayLiteral("tessellationEvaluationSourceCode"), + tessellationEvaluationShaderCode); emit tessellationEvaluationShaderCodeChanged(); } } @@ -302,8 +298,8 @@ void QShaderProgram::setGeometryShaderCode(const QByteArray &geometryShaderCode) Q_D(QShaderProgram); if (geometryShaderCode != d->m_geometryShaderCode) { d->m_geometryShaderCode = geometryShaderCode; - notifyPropertyChange(QByteArrayLiteral("geometrySourceCode"), - geometryShaderCode); + d->notifyPropertyChange(QByteArrayLiteral("geometrySourceCode"), + geometryShaderCode); emit geometryShaderCodeChanged(); } } @@ -322,8 +318,8 @@ void QShaderProgram::setFragmentShaderCode(const QByteArray &fragmentShaderCode) Q_D(QShaderProgram); if (fragmentShaderCode != d->m_fragmentShaderCode) { d->m_fragmentShaderCode = fragmentShaderCode; - notifyPropertyChange(QByteArrayLiteral("fragmentSourceCode"), - fragmentShaderCode); + d->notifyPropertyChange(QByteArrayLiteral("fragmentSourceCode"), + fragmentShaderCode); emit fragmentShaderCodeChanged(); } } @@ -339,8 +335,8 @@ void QShaderProgram::setComputeShaderCode(const QByteArray &computeShaderCode) Q_D(QShaderProgram); if (computeShaderCode != d->m_computeShaderCode) { d->m_computeShaderCode = computeShaderCode; - notifyPropertyChange(QByteArrayLiteral("computeSourceCode"), - computeShaderCode); + d->notifyPropertyChange(QByteArrayLiteral("computeSourceCode"), + computeShaderCode); emit computeShaderCodeChanged(); } } |