diff options
author | Liang Qi <liang.qi@qt.io> | 2016-06-29 10:11:24 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-06-29 10:11:25 +0200 |
commit | 5f2249f4dcce7523d8dc88b425b43834c4c3cab9 (patch) | |
tree | 5ddbd03806a0f940cca2d4de966c2a00d761717b /src/qml | |
parent | d5cb1bf4a9e19a0a4471ba5c935f441463a73414 (diff) | |
parent | 1b897195a14b63a553b139983736d8dfdd419ffd (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: I70c0c672708522f7157849365cc53ee271d8e460
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/qml/qqmlboundsignal.cpp | 5 | ||||
-rw-r--r-- | src/qml/qml/qqmlmetatype.cpp | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp index dc215ba8a5..c6a7cde240 100644 --- a/src/qml/qml/qqmlboundsignal.cpp +++ b/src/qml/qml/qqmlboundsignal.cpp @@ -54,6 +54,7 @@ #include <private/qqmlcompiler_p.h> #include "qqmlinfo.h" +#include <private/qjsvalue_p.h> #include <private/qv4value_p.h> #include <private/qv4qobjectwrapper_p.h> @@ -224,7 +225,9 @@ void QQmlBoundSignalExpression::evaluate(void **a) //### ideally we would use metaTypeToJS, however it currently gives different results // for several cases (such as QVariant type and QObject-derived types) //args[ii] = engine->metaTypeToJS(type, a[ii + 1]); - if (type == QMetaType::QVariant) { + if (type == qMetaTypeId<QJSValue>()) { + callData->args[ii] = *QJSValuePrivate::getValue(reinterpret_cast<QJSValue *>(a[ii + 1])); + } else if (type == QMetaType::QVariant) { callData->args[ii] = scope.engine->fromVariant(*((QVariant *)a[ii + 1])); } else if (type == QMetaType::Int) { //### optimization. Can go away if we switch to metaTypeToJS, or be expanded otherwise diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp index 576478b729..7b129e2b57 100644 --- a/src/qml/qml/qqmlmetatype.cpp +++ b/src/qml/qml/qqmlmetatype.cpp @@ -490,8 +490,8 @@ QQmlType *QQmlType::resolveCompositeBaseType(QQmlEnginePrivate *engine) const Q_ASSERT(isComposite()); if (!engine) return 0; - QQmlTypeData *td = engine->typeLoader.getType(sourceUrl()); - if (!td || !td->isComplete()) + QQmlRefPointer<QQmlTypeData> td(engine->typeLoader.getType(sourceUrl()), QQmlRefPointer<QQmlTypeData>::Adopt); + if (td.isNull() || !td->isComplete()) return 0; QQmlCompiledData *cd = td->compiledData(); const QMetaObject *mo = cd->rootPropertyCache->firstCppMetaObject(); |