diff options
author | Tomi Korpipää <tomi.korpipaa@theqtcompany.com> | 2015-05-20 08:29:38 +0300 |
---|---|---|
committer | Pasi Keränen <pasi.keranen@digia.com> | 2015-05-20 07:48:43 +0000 |
commit | eca318a367284b45efd3e36aad2842a684811879 (patch) | |
tree | 98814e7a4edb9b6f1bb3978b8efe1f616aeae7a9 | |
parent | 42756ad88820d35c6b66684dbf8e9ccc359f9510 (diff) |
Fixed getAttachedShaders return types
Note: Does not fix all the null problems in the bug.
Change-Id: I491f179451f89a95f5bc6bd8572284d3b764d4b9
Task-number: QTBUG-45898
Reviewed-by: Pasi Keränen <pasi.keranen@digia.com>
-rw-r--r-- | src/imports/qtcanvas3d/context3d.cpp | 14 | ||||
-rw-r--r-- | src/imports/qtcanvas3d/context3d_p.h | 2 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/imports/qtcanvas3d/context3d.cpp b/src/imports/qtcanvas3d/context3d.cpp index 95c0284..abb2b8c 100644 --- a/src/imports/qtcanvas3d/context3d.cpp +++ b/src/imports/qtcanvas3d/context3d.cpp @@ -2049,25 +2049,29 @@ void CanvasContext::attachShader(QJSValue program3D, QJSValue shader3D) /*! * \internal */ -QVariantList CanvasContext::getAttachedShaders(QJSValue program3D) +QJSValue CanvasContext::getAttachedShaders(QJSValue program3D) { qCDebug(canvas3drendering).nospace() << "Context3D::" << __FUNCTION__ << "(program3D:" << program3D.toString() << ")"; - QVariantList shaderList; + int index = 0; CanvasProgram *program = getAsProgram3D(program3D); - if (!program || !checkParent(program, __FUNCTION__)) - return shaderList; + if (!program || !checkParent(program, __FUNCTION__)) { + m_error |= CANVAS_INVALID_VALUE; + return QJSValue(QJSValue::NullValue); + } QList<CanvasShader *> shaders = program->attachedShaders(); + QJSValue shaderList = m_engine->newArray(shaders.count()); + for (QList<CanvasShader *>::const_iterator iter = shaders.constBegin(); iter != shaders.constEnd(); iter++) { CanvasShader *shader = *iter; - shaderList << QVariant::fromValue(shader); + shaderList.setProperty(index++, m_engine->newQObject((CanvasShader *)shader)); } return shaderList; diff --git a/src/imports/qtcanvas3d/context3d_p.h b/src/imports/qtcanvas3d/context3d_p.h index a45c944..60ffcfe 100644 --- a/src/imports/qtcanvas3d/context3d_p.h +++ b/src/imports/qtcanvas3d/context3d_p.h @@ -1160,7 +1160,7 @@ public: Q_INVOKABLE CanvasActiveInfo *getActiveAttrib(QJSValue program, uint index); Q_INVOKABLE CanvasActiveInfo *getActiveUniform(QJSValue program, uint index); - Q_INVOKABLE QVariantList getAttachedShaders(QJSValue program); + Q_INVOKABLE QJSValue getAttachedShaders(QJSValue program); Q_INVOKABLE void stencilFunc(glEnums func, int ref, uint mask); Q_INVOKABLE void stencilFuncSeparate(glEnums face, glEnums func, int ref, uint mask); |