summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drender/items
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-06-27 08:10:04 +0200
committerPaul Lemire <paul.lemire@kdab.com>2016-07-17 18:51:35 +0000
commitf4b6cc2625671c70e4899a9d277923585818554c (patch)
tree82109ff6f8fc455e04e05d26fec0c5fd5838a0a6 /src/quick3d/quick3drender/items
parent68e0e8837a7437b483d8639167a6ebad57b1dd35 (diff)
Quick3DBuffer: do not always convert from QJSValue
In most cases when Quick3DBuffer::setBufferData is called, the QVariant parameter contains a QJSValue. In some cases though, such as when the data property of a Quick3DBuffer is set from a C++ data model, the QVariant may contain a QByteArray directly. Doing the QJSValue conversion in that case would result in a failure as the data set would be 0. Perform the proper QVariant conversion based on the contained type. Change-Id: I263d275fd780f57a67f11c9ca47c5d6f8ddf7a23 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d/quick3drender/items')
-rw-r--r--src/quick3d/quick3drender/items/quick3dbuffer.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/quick3d/quick3drender/items/quick3dbuffer.cpp b/src/quick3d/quick3drender/items/quick3dbuffer.cpp
index e2a40da78..73292a3b5 100644
--- a/src/quick3d/quick3drender/items/quick3dbuffer.cpp
+++ b/src/quick3d/quick3drender/items/quick3dbuffer.cpp
@@ -53,6 +53,10 @@ namespace Render {
namespace Quick {
+namespace {
+const int jsValueTypeId = qMetaTypeId<QJSValue>();
+}
+
Quick3DBuffer::Quick3DBuffer(QObject *parent)
: QObject(parent)
, m_engine(nullptr)
@@ -84,8 +88,12 @@ QVariant Quick3DBuffer::bufferData() const
void Quick3DBuffer::setBufferData(const QVariant &bufferData)
{
- QJSValue jsValue = bufferData.value<QJSValue>();
- parentBuffer()->setData(convertToRawData(jsValue));
+ if (bufferData.userType() == QMetaType::QByteArray) {
+ parentBuffer()->setData(bufferData.toByteArray());
+ } else if (bufferData.userType() == jsValueTypeId) {
+ QJSValue jsValue = bufferData.value<QJSValue>();
+ parentBuffer()->setData(convertToRawData(jsValue));
+ }
}
void Quick3DBuffer::initEngines()