diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/imports/qtcanvas3d/context3d.cpp | 45 | ||||
-rw-r--r-- | src/imports/qtcanvas3d/teximage3d.cpp | 21 |
3 files changed, 23 insertions, 45 deletions
diff --git a/.qmake.conf b/.qmake.conf index 5ee85f8..ff8a3a7 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,6 +2,6 @@ load(qt_build_config) DEFINES += QT_NO_FOREACH -MODULE_VERSION = 5.10.1 +MODULE_VERSION = 5.11.0 CMAKE_MODULE_TESTS=- diff --git a/src/imports/qtcanvas3d/context3d.cpp b/src/imports/qtcanvas3d/context3d.cpp index 7b2e590..bad4e4f 100644 --- a/src/imports/qtcanvas3d/context3d.cpp +++ b/src/imports/qtcanvas3d/context3d.cpp @@ -4422,10 +4422,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::Float32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } // Float32Array (with 4 values) @@ -4443,10 +4440,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::Float32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } // Int32Array (with 2 elements) @@ -4461,10 +4455,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::Int32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } // Int32Array (with 4 elements) // Intentional flow through @@ -4480,10 +4471,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::Int32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } // sequence<GLboolean> (with 4 values) @@ -4560,10 +4548,7 @@ QJSValue CanvasContext::getParameter(glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::UInt32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } case FRAMEBUFFER_BINDING: { return m_engine->newQObject(m_currentFramebuffer); @@ -5702,10 +5687,7 @@ QJSValue CanvasContext::getVertexAttrib(uint index, glEnums pname) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::Float32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } } default: @@ -5906,10 +5888,7 @@ QJSValue CanvasContext::getUniform(QJSValue program3D, QJSValue location3D) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::Int32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } } case FLOAT_VEC2: @@ -5932,10 +5911,7 @@ QJSValue CanvasContext::getUniform(QJSValue program3D, QJSValue location3D) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::Float32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } } case BOOL_VEC2: @@ -5981,10 +5957,7 @@ QJSValue CanvasContext::getUniform(QJSValue program3D, QJSValue location3D) QV4::ScopedFunctionObject constructor(scope, m_v4engine->typedArrayCtors[ QV4::Heap::TypedArray::Float32Array]); - QV4::ScopedCallData callData(scope, 1); - callData->args[0] = buffer; - constructor->construct(scope, callData); - return QJSValue(m_v4engine, scope.result.asReturnedValue()); + return QJSValue(m_v4engine, constructor->callAsConstructor(buffer, 1)); } } default: diff --git a/src/imports/qtcanvas3d/teximage3d.cpp b/src/imports/qtcanvas3d/teximage3d.cpp index d3e1e07..9814e6b 100644 --- a/src/imports/qtcanvas3d/teximage3d.cpp +++ b/src/imports/qtcanvas3d/teximage3d.cpp @@ -47,18 +47,23 @@ QT_BEGIN_NAMESPACE QT_CANVAS3D_BEGIN_NAMESPACE -static QMap<QQmlEngine *,CanvasTextureImageFactory *>m_qmlEngineToImageFactoryMap; -static ulong m_texId = 0; - -class StaticFactoryMapDeleter +class EngineToImageFactoryMap : public QMap<QQmlEngine *, CanvasTextureImageFactory *> { + bool isDeleting = false; public: - StaticFactoryMapDeleter() {} - ~StaticFactoryMapDeleter() { - qDeleteAll(m_qmlEngineToImageFactoryMap); + ~EngineToImageFactoryMap() { + isDeleting = true; + qDeleteAll(*this); + } + void remove(QQmlEngine *e) { + if (isDeleting) + return; + QMap<QQmlEngine *, CanvasTextureImageFactory *>::remove(e); } }; -static StaticFactoryMapDeleter staticFactoryMapDeleter; + +static EngineToImageFactoryMap m_qmlEngineToImageFactoryMap; +static ulong m_texId = 0; CanvasTextureImageFactory::CanvasTextureImageFactory(QQmlEngine *engine, QObject *parent) : QObject(parent) |