From eca318a367284b45efd3e36aad2842a684811879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= <tomi.korpipaa@theqtcompany.com> Date: Wed, 20 May 2015 08:29:38 +0300 Subject: [PATCH] Fixed getAttachedShaders return types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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> --- src/imports/qtcanvas3d/context3d.cpp | 14 +++++++++----- 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); -- GitLab