From fb5394ce6d38d06c13b01574cf00d4fe98025c52 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Mon, 27 Aug 2018 11:27:51 +0200 Subject: Port to changed internal declarative API for typed arrays After commit 7bdb46c5aae3da345653fe91fbe9281b39015497 the enum for the typed array types has moved. Task-number: QTBUG-70187 Change-Id: I505625820e6175c22b19ba43e83017025ae3b14b Reviewed-by: Liang Qi --- src/imports/qtcanvas3d/context3d.cpp | 51 ++++++++++++++++++------------------ src/imports/qtcanvas3d/context3d_p.h | 22 ++++++++++++++-- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/src/imports/qtcanvas3d/context3d.cpp b/src/imports/qtcanvas3d/context3d.cpp index bad4e4f..682f74f 100644 --- a/src/imports/qtcanvas3d/context3d.cpp +++ b/src/imports/qtcanvas3d/context3d.cpp @@ -621,7 +621,7 @@ void CanvasContext::uniformMatrixNfv(int dim, const QJSValue &location3D, bool t int arrayLen = 0; float *uniformData = reinterpret_cast( - getTypedArrayAsRawDataPtr(array, arrayLen, QV4::Heap::TypedArray::Float32Array)); + getTypedArrayAsRawDataPtr(array, arrayLen, QV4::TypedArrayType::Float32Array)); if (!m_currentProgram || !uniformData || !locationObj) return; @@ -805,7 +805,7 @@ void CanvasContext::compressedTexImage2D(glEnums target, int level, glEnums inte return; int byteLen = 0; - uchar *srcData = getTypedArrayAsRawDataPtr(pixels, byteLen, QV4::Heap::TypedArray::UInt8Array); + uchar *srcData = getTypedArrayAsRawDataPtr(pixels, byteLen, QV4::TypedArrayType::UInt8Array); if (srcData) { // Driver implementation will handle checking of texture @@ -865,7 +865,7 @@ void CanvasContext::compressedTexSubImage2D(glEnums target, int level, return; int byteLen = 0; - uchar *srcData = getTypedArrayAsRawDataPtr(pixels, byteLen, QV4::Heap::TypedArray::UInt8Array); + uchar *srcData = getTypedArrayAsRawDataPtr(pixels, byteLen, QV4::TypedArrayType::UInt8Array); if (srcData) { // Driver implementation will handle checking of texture @@ -1108,7 +1108,7 @@ void CanvasContext::texImage2D(glEnums target, int level, glEnums internalformat } if (!srcData) - srcData = getTypedArrayAsRawDataPtr(pixels, QV4::Heap::TypedArray::UInt8Array); + srcData = getTypedArrayAsRawDataPtr(pixels, QV4::TypedArrayType::UInt8Array); if (!srcData) { qCWarning(canvas3drendering).nospace() << "Context3D::" @@ -1134,7 +1134,7 @@ void CanvasContext::texImage2D(glEnums target, int level, glEnums internalformat case UNSIGNED_SHORT_5_6_5: case UNSIGNED_SHORT_5_5_5_1: { if (!srcData) - srcData = getTypedArrayAsRawDataPtr(pixels, QV4::Heap::TypedArray::UInt16Array); + srcData = getTypedArrayAsRawDataPtr(pixels, QV4::TypedArrayType::UInt16Array); if (!srcData) { qCWarning(canvas3drendering).nospace() << "Context3D::" @@ -1168,7 +1168,7 @@ void CanvasContext::texImage2D(glEnums target, int level, glEnums internalformat } uchar *CanvasContext::getTypedArrayAsRawDataPtr(const QJSValue &jsValue, int &byteLength, - QV4::Heap::TypedArray::Type type) + QV4::TypedArrayType type) { QV4::Scope scope(m_v4engine); QV4::Scoped typedArray(scope, @@ -1177,8 +1177,8 @@ uchar *CanvasContext::getTypedArrayAsRawDataPtr(const QJSValue &jsValue, int &by if (!typedArray) return 0; - QV4::Heap::TypedArray::Type arrayType = typedArray->arrayType(); - if (type < QV4::Heap::TypedArray::NTypes && arrayType != type) + QV4::TypedArrayType arrayType = static_cast(typedArray->arrayType()); + if (type < QV4::NTypedArrayTypes && arrayType != type) return 0; uchar *dataPtr = reinterpret_cast(typedArray->arrayData()->data()); @@ -1188,7 +1188,7 @@ uchar *CanvasContext::getTypedArrayAsRawDataPtr(const QJSValue &jsValue, int &by } uchar *CanvasContext::getTypedArrayAsRawDataPtr(const QJSValue &jsValue, - QV4::Heap::TypedArray::Type type) + QV4::TypedArrayType type) { int dummy; return getTypedArrayAsRawDataPtr(jsValue, dummy, type); @@ -1196,7 +1196,7 @@ uchar *CanvasContext::getTypedArrayAsRawDataPtr(const QJSValue &jsValue, uchar *CanvasContext::getTypedArrayAsRawDataPtr(const QJSValue &jsValue, int &byteLength) { - return getTypedArrayAsRawDataPtr(jsValue, byteLength, QV4::Heap::TypedArray::NTypes); + return getTypedArrayAsRawDataPtr(jsValue, byteLength, QV4::NTypedArrayTypes); } uchar *CanvasContext::getArrayBufferAsRawDataPtr(const QJSValue &jsValue, int &byteLength) @@ -1294,7 +1294,7 @@ void CanvasContext::texSubImage2D(glEnums target, int level, return; } - srcData = getTypedArrayAsRawDataPtr(pixels, QV4::Heap::TypedArray::UInt8Array); + srcData = getTypedArrayAsRawDataPtr(pixels, QV4::TypedArrayType::UInt8Array); if (!srcData) { qCWarning(canvas3drendering).nospace() << "Context3D::" << __FUNCTION__ @@ -1318,7 +1318,7 @@ void CanvasContext::texSubImage2D(glEnums target, int level, case UNSIGNED_SHORT_4_4_4_4: case UNSIGNED_SHORT_5_6_5: case UNSIGNED_SHORT_5_5_5_1: { - srcData = getTypedArrayAsRawDataPtr(pixels, QV4::Heap::TypedArray::UInt16Array); + srcData = getTypedArrayAsRawDataPtr(pixels, QV4::TypedArrayType::UInt16Array); if (!srcData) { qCWarning(canvas3drendering).nospace() << "Context3D::" << __FUNCTION__ @@ -3263,8 +3263,7 @@ void CanvasContext::vertexAttribNfv(int dim, unsigned int indx, const QJSValue & } int arrayLen = 0; - uchar *attribData = getTypedArrayAsRawDataPtr(array, arrayLen, - QV4::Heap::TypedArray::Float32Array); + uchar *attribData = getTypedArrayAsRawDataPtr(array, arrayLen, QV4::TypedArrayType::Float32Array); if (!attribData) { m_error |= CANVAS_INVALID_OPERATION; @@ -3449,8 +3448,8 @@ void CanvasContext::uniformNxv(int dim, bool typeFloat, const QJSValue &location int arrayLen = 0; uchar *uniformData = getTypedArrayAsRawDataPtr(array, arrayLen, - typeFloat ? QV4::Heap::TypedArray::Float32Array - : QV4::Heap::TypedArray::Int32Array); + typeFloat ? QV4::TypedArrayType::Float32Array + : QV4::TypedArrayType::Int32Array); if (!uniformData) { m_error |= CANVAS_INVALID_OPERATION; @@ -4421,7 +4420,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::Float32Array]); + QV4::TypedArrayType::Float32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } @@ -4439,7 +4438,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::Float32Array]); + QV4::TypedArrayType::Float32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } @@ -4454,7 +4453,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::Int32Array]); + QV4::TypedArrayType::Int32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } // Int32Array (with 4 elements) @@ -4470,7 +4469,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::Int32Array]); + QV4::TypedArrayType::Int32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } @@ -4547,7 +4546,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) } QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::UInt32Array]); + QV4::TypedArrayType::UInt32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } case FRAMEBUFFER_BINDING: { @@ -5093,7 +5092,7 @@ void CanvasContext::readPixels(int x, int y, long width, long height, glEnums fo return; } - uchar *bufferPtr = getTypedArrayAsRawDataPtr(pixels, QV4::Heap::TypedArray::UInt8Array); + uchar *bufferPtr = getTypedArrayAsRawDataPtr(pixels, QV4::TypedArrayType::UInt8Array); if (!bufferPtr) { qCWarning(canvas3drendering).nospace() << "Context3D::" << __FUNCTION__ << ":INVALID_OPERATION:pixels must be Uint8Array."; @@ -5686,7 +5685,7 @@ QJSValue CanvasContext::getVertexAttrib(uint index, glEnums pname) } else { QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::Float32Array]); + QV4::TypedArrayType::Float32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } } @@ -5887,7 +5886,7 @@ QJSValue CanvasContext::getUniform(QJSValue program3D, QJSValue location3D) } else { QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::Int32Array]); + QV4::TypedArrayType::Int32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } } @@ -5910,7 +5909,7 @@ QJSValue CanvasContext::getUniform(QJSValue program3D, QJSValue location3D) } else { QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::Float32Array]); + QV4::TypedArrayType::Float32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } } @@ -5956,7 +5955,7 @@ QJSValue CanvasContext::getUniform(QJSValue program3D, QJSValue location3D) } else { QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ - QV4::Heap::TypedArray::Float32Array]); + QV4::TypedArrayType::Float32Array]); return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } } diff --git a/src/imports/qtcanvas3d/context3d_p.h b/src/imports/qtcanvas3d/context3d_p.h index 1a5b682..dcd8e3a 100644 --- a/src/imports/qtcanvas3d/context3d_p.h +++ b/src/imports/qtcanvas3d/context3d_p.h @@ -80,6 +80,24 @@ #endif QT_BEGIN_NAMESPACE + +#if Q_QML_PRIVATE_API_VERSION < 3 +namespace QV4 { +enum TypedArrayType { + Int8Array = QV4::Heap::TypedArray::Int8Array, + UInt8Array = QV4::Heap::TypedArray::UInt8Array, + Int16Array = QV4::Heap::TypedArray::Int16Array, + UInt16Array = QV4::Heap::TypedArray::UInt16Array, + Int32Array = QV4::Heap::TypedArray::Int32Array, + UInt32Array = QV4::Heap::TypedArray::UInt32Array, + UInt8ClampedArray = QV4::Heap::TypedArray::UInt8ClampedArray, + Float32Array = QV4::Heap::TypedArray::Float32Array, + Float64Array = QV4::Heap::TypedArray::Float64Array, + NTypedArrayTypes = QV4::Heap::TypedArray::NTypes +}; +} +#endif + QT_CANVAS3D_BEGIN_NAMESPACE #define ENUM_AS_PROPERTY(A) Q_PROPERTY(QtCanvas3D::CanvasContext::glEnums A READ A ## _read); inline QtCanvas3D::CanvasContext::glEnums A ## _read() { return QtCanvas3D::CanvasContext::A; } @@ -1215,9 +1233,9 @@ private slots: private: uchar *getTypedArrayAsRawDataPtr(const QJSValue &jsValue, int &byteLength, - QV4::Heap::TypedArray::Type type); + QV4::TypedArrayType type); uchar *getTypedArrayAsRawDataPtr(const QJSValue &jsValue, - QV4::Heap::TypedArray::Type type); + QV4::TypedArrayType type); uchar *getTypedArrayAsRawDataPtr(const QJSValue &jsValue, int &byteLength); uchar *getArrayBufferAsRawDataPtr(const QJSValue &jsValue, int &byteLength); -- cgit v1.2.3