summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@theqtcompany.com>2015-05-20 08:29:38 +0300
committerPasi Keränen <pasi.keranen@digia.com>2015-05-20 07:48:43 +0000
commiteca318a367284b45efd3e36aad2842a684811879 (patch)
tree98814e7a4edb9b6f1bb3978b8efe1f616aeae7a9
parent42756ad88820d35c6b66684dbf8e9ccc359f9510 (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.cpp14
-rw-r--r--src/imports/qtcanvas3d/context3d_p.h2
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);